Stub AWS服务返回Cucumber/Capybara中的对象值



在我正在构建的Rails应用程序中,我们正在使用控制器进行的AWS(DynamoDB)调用的结果来填充视图,这是我们替换的"标准" Rails SQL存储的一部分使用DynamoDB存储。正常的请求和响应在电线上运行。因此,这是Cucumber Capybara的不可避免的情况之一,绝对有必要在Cucumber/Capybara中存根并返回预定的结果(AWS DynamodB表对象具有数据或对此类对象的某些模拟)。

>

不幸的是,我不确定如何创建存根。在features/support/webmock.rb中:

AWS.stub!

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)

我更喜欢不使用第三方库,但是如果没有其他方法可以完成这种固执。

您是否看过VCR。我认为您可以通过记录呼叫的结果,然后重新使用后续测试运行。

来解决问题。

最新更新