【发布时间】:2018-05-31 21:50:42
【问题描述】:
我的 Rails 项目中有一堆 RSpec 测试,用于测试对外部 REST API 的 HTTP 调用,并使用 VCR 磁带记录请求和响应。目前我的 VCR 配置如下:
VCR.configure do |c|
c.cassette_library_dir = 'spec/vcr_cassettes'
c.hook_into :webmock
c.configure_rspec_metadata!
end
所以请求匹配规则只匹配 HTTP 方法和 URI。我想更改此设置以匹配请求正文:
VCR.configure do |c|
c.cassette_library_dir = 'spec/vcr_cassettes'
c.hook_into :webmock
c.configure_rspec_metadata!
c.default_cassette_options = {
:match_requests_on => [:uri, :method, :body],
}
end
但由于我的项目中已经有很多测试,我想逐步进行,仅对某些测试激活这个新限制,因此其他测试(使用旧磁带)不会中断。
是否有任何方法可以将参数传递给 RSpec 测试,以使自定义请求匹配规则仅适用于某些特定测试或测试组?
我想像
it 'reverts transaction', :vcr, :body_matching => true do
# something
end
然后根据body_matching参数动态更改设置。
【问题讨论】:
标签: ruby-on-rails rspec-rails vcr