本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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_date
,now
而是 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