Ruby on rails 某些特定RSpec测试的自定义VCR请求匹配选项

Ruby on rails 某些特定RSpec测试的自定义VCR请求匹配选项,ruby-on-rails,rspec-rails,vcr,Ruby On Rails,Rspec Rails,Vcr,我的Rails项目中有一系列RSpec测试,测试对外部RESTAPI的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.confi

我的Rails项目中有一系列RSpec测试,测试对外部RESTAPI的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\u matching
参数动态更改设置。

可以将
:vcr
元数据设置为将用于插入磁带的选项散列。所以你可以

it 'reverts transaction', vcr: { :match_requests_on => [:uri, :method, :body] } do
  # something
end

为了使它更好,您可以将该散列分配给一个变量,然后将其设置为
:vcr
选项。如果您想在设置之前/之后创建您自己的RSpec,请键入您自己的元数据名称,然后在元数据中不包括
:vcr
(因为您需要自己(插入盒式磁带)调用)。有关VCR安装之前/之后的挂钩,请参阅。

可以将
:VCR
元数据设置为将用于插入磁带的选项散列。所以你可以

it 'reverts transaction', vcr: { :match_requests_on => [:uri, :method, :body] } do
  # something
end
为了使它更好,您可以将该散列分配给一个变量,然后将其设置为
:vcr
选项。如果您想在设置之前/之后创建您自己的RSpec,请键入您自己的元数据名称,然后在元数据中不包括
:vcr
(因为您需要自己(插入盒式磁带)调用)。有关VCR安装之前/之后的信息,请参阅