簡體   English   中英

如何使用AWS開發工具包V2測試對到AWS客戶端對象的調用鏈進行存根處理?

[英]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請求。

您可以查看https://relishapp.com/rspec/rspec-mocks/docs/working-with-legacy-code/message-chains(receive_message_chain

    allow(double).to receive_message_chain(:foo, :bar).and_return(:baz)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM