AWS SDK for Ruby
開発者ガイド

クライアントレスポンス、およびエラーをスタブする

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