Я модернизирую нашу реализацию 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.
Соответствующий текст должен быть скопирован в этот ответ в случае, если ссылка идет мертвым в будущем –
Спасибо. Я бы предпочел не использовать message_chain, кроме как в крайнем случае (если возможно, я хотел бы отключить вызовы метода для объекта AWS отдельно). Мой вопрос заключается в том, как тестировать вызов с использованием AWS-созданных тестов, поэтому это касается другой проблемы. –
Как насчет этого https://github.com/vcr/vcr? – dsounded