翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
クライアントレスポンスとエラーをスタブ
AWS SDK for Ruby アプリケーションでクライアントレスポンスとクライアントエラーをスタブする方法について説明します。
クライアントレスポンスをスタブする
レスポンスをスタブすると、 AWS SDK for Ruby はネットワークトラフィックを無効にし、クライアントはスタブされた (またはフェイク) データを返します。スタブされたデータを指定しない場合、クライアントは次のように返します。
-
リストは空の配列として
-
マップは空のハッシュとして
-
数値はゼロで
-
日付は
now
で
次の例では、Amazon S3 バケットのリストのスタブされた名前を返します。
require 'aws-sdk' s3 = Aws::S3::Client.new(stub_responses: true) bucket_data = s3.stub_data(:list_buckets, :buckets => [{name:'aws-sdk'}, {name:'aws-sdk2'}]) s3.stub_responses(:list_buckets, bucket_data) bucket_names = s3.list_buckets.buckets.map(&:name) # List each bucket by name bucket_names.each do |name| puts name end
このコードを実行すると、以下が表示されます。
aws-sdk aws-sdk2
注記
スタブされたデータを指定すると、デフォルト値は、残りのインスタンス属性に適用されなくなります。これは、前の例で、残りのインスタンス属性の creation_date
は、now
ではなく、nil
であることを意味します。
AWS SDK for Ruby はスタブされたデータを検証します。間違った種類のデータを渡すと、ArgumentError
例外を生成します。たとえば、bucket_data
への前の割り当ての代わりに、以下を使用したとします。
bucket_data = s3.stub_data(:list_buckets, buckets:['aws-sdk', 'aws-sdk2'])
AWS SDK for Ruby では、2 つのArgumentError
例外が発生します。
expected params[:buckets][0] to be a hash expected params[:buckets][1] to be a hash
クライアントエラーをスタブする
AWS SDK for Ruby が特定のメソッドに対して生成するエラーをスタブすることもできます。次の例では Caught Timeout::Error error calling head_bucket on aws-sdk
が表示されます。
require 'aws-sdk' s3 = Aws::S3::Client.new(stub_responses: true) s3.stub_responses(:head_bucket, Timeout::Error) begin s3.head_bucket({bucket: 'aws-sdk'}) rescue Exception => ex puts "Caught #{ex.class} error calling 'head_bucket' on 'aws-sdk'" end