2015-07-21 8 views
1

Я модернизирую нашу реализацию AWS до V2. Я хотел бы создать объект AWS-клиента в моих тестах, чьи веб-запросы затухают. У меня проблема заключается в том, чтобы этот тестовый клиент соответствовал реальному клиенту, чтобы я мог тестировать методы, которые могут быть вызваны клиентом в коде.Как отключить цепочку вызовов к объекту клиента AWS с помощью тестов AWS SDK V2?

Мой комплект тестов 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 (в отличие от двойника экземпляра), чтобы соответствовать клиенту, чтобы не было несанкционированных вызовов API, и поэтому я могу протестировать методы, вызываемые на клиенте в коде ?

Когда я пытался глобально или частично заглушить ответы конфигурации AWS в spec_helper или тестовом файле (Aws.config[:stub_responses] = true), я по-прежнему вижу неавторизованные запросы API.

ответ

0

Вы можете посмотреть на 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) 
+0

Соответствующий текст должен быть скопирован в этот ответ в случае, если ссылка идет мертвым в будущем –

+0

Спасибо. Я бы предпочел не использовать message_chain, кроме как в крайнем случае (если возможно, я хотел бы отключить вызовы метода для объекта AWS отдельно). Мой вопрос заключается в том, как тестировать вызов с использованием AWS-созданных тестов, поэтому это касается другой проблемы. –

+0

Как насчет этого https://github.com/vcr/vcr? – dsounded