![](/img/trans.png)
[英]How do I create a presigned link to a particular version of an object using the Ruby AWS SDK v2?
[英]How can I stub a chain of calls to an AWS client object using AWS SDK V2 tests?
我正在將AWS的實施升級到V2。 我想在測試中創建一個AWS客戶端對象,該對象的Web請求被存根。 我遇到的問題是讓此測試客戶端與真實客戶端相對應,以便我可以測試可能在代碼中在客戶端上調用的方法。
我的測試套件是RSpec。 為您說明問題:
aws_client = Aws::DynamoDB::Client.new(stub_responses: true)
是它自己的對象。 如果在測試中創建,它將不與代碼中的客戶端相對應,因為instance_double會:
let(:client) { instance_double(Aws::DynamoDB::Client) }
before do
allow(Aws::DynamoDB::Client).to receive(:new).and_return(client)
allow(client).to receive(<some_method>).with(<some parameters>)...
end
您可以看到正在使用“客戶端”來測試代碼是否以所需的方式與API通信。 測試取決於代碼是否使用帶有正確參數的正確方法。
如何獲得類似於aws_client(而不是實例double的對象)的對象以對應於客戶端,這樣就不會對API進行未經授權的調用,因此我可以測試代碼中在客戶端上調用的方法?
當我嘗試在spec_helper或測試文件( Aws.config[:stub_responses] = true
)中全局或部分存根AWS配置響應時,我仍然看到未經授權的API請求。
allow(double).to receive_message_chain(:foo, :bar).and_return(:baz)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.