使用 stubbing 將測試新增至適用於 Ruby 的 AWS SDK 應用程式 - AWS 適用於 Ruby 的 SDK

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 stubbing 將測試新增至適用於 Ruby 的 AWS SDK 應用程式

了解如何在適用於 Ruby 的 AWS SDK 應用程式中清除用戶端回應和用戶端錯誤。

繪製用戶端回應

當您清除回應時,適用於 Ruby 的 AWS SDK 會停用網路流量,而用戶端會傳回已清除 (或仿造) 的資料。如果您未提供虛設的資料,用戶端會傳回:

  • 列為空白陣列

  • 映射為空雜湊

  • 數值為零

  • 日期為 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_datenow而是 nil

適用於 Ruby 的 AWS 開發套件會驗證您的虛設資料。如果您傳入錯誤類型的資料,就會引發ArgumentError例外狀況。例如,如果 不是先前的指派bucket_data,而是使用下列項目:

bucket_data = s3.stub_data(:list_buckets, buckets:['aws-sdk', 'aws-sdk2'])

適用於 Ruby 的 AWS SDK 引發兩個ArgumentError例外狀況。

expected params[:buckets][0] to be a hash expected params[:buckets][1] to be a hash

繪製用戶端錯誤

您也可以清除適用於 Ruby 的 AWS SDK 針對特定方法引發的錯誤。下列範例顯示 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