Сервисы-заглушки AWS для возврата значения объекта в Cucumber/Capybara

В приложении Rails, которое я создаю, мы используем результаты вызовов AWS (DynamoDB), сделанных контроллером, для заполнения представления, как часть нашей замены «стандартного» хранилища Rails SQL на хранилище DynamoDB. Обычные запросы и ответы передаются по сети. Так что это одна из тех неизбежных ситуаций заглушки водосвинки огурца, где абсолютно необходимо заглушить Cucumber/ Capybara и вернуть заранее определенный результат (табличные объекты AWS DynamoDB с данными или некоторую симуляцию таких объектов).

К сожалению, я не знаю, как создавать заглушки. В 1_:

AWS.stub!

or

stub_request(:post, <dynamo_db_url_string>).with(body: table_name_json).to_return(status: 200, body: '', headers: {})

вернет пустой результат, который нельзя использовать, так как этот раздел программы напрямую работает с таблицей DynamoDB и ее данными. В частности, stub_request ограничивает типы возвращаемых объектов. Я хотел бы вернуть объекты AWS::DynamoDB, которые, насколько мне известно, несовместимы с командой stub_request.

я тоже пробовал

dynamo = AWS::DynamoDB.new(stub_requests: true)
AWS::DynamoDB.stub(:new).to_return(dynamo)

как в features/support/webmock.rb, так и в отдельных шагах Capybara. Однако я получаю эту ошибку:

The use of doubles or partial doubles from rspec-mocks outside of the 
per-test lifecycle is not supported. (RSpec::Mocks::OutsideOfExampleError)

Я предпочитаю не использовать стороннюю библиотеку, но буду использовать, если нет другого способа выполнить такую ​​заглушку.


person La-comadreja    schedule 13.05.2015    source источник


Ответы (1)


Вы смотрели VCR. Я думаю, вы можете решить свою проблему, записав результаты вызова, а затем повторно используя их в последующих тестовых прогонах.

person diabolist    schedule 15.05.2015