在我正在构建的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。我认为您可以通过记录呼叫的结果,然后重新使用后续测试运行。