В приложении 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)
Я предпочитаю не использовать стороннюю библиотеку, но буду использовать, если нет другого способа выполнить такую заглушку.