听起来就像re_record_interval
它设计的那样工作,但它可能不是你想要的。
当您使用该选项时,如果经过足够的时间:re_record_interval
,VCR 会强制:record
模式进入。:all
在这种记录模式下,它允许所有HTTP请求都是真实的并记录它们。当它持久化记录到磁盘的内容时,它将新的 HTTPInteractions 与以前记录的内容合并,删除任何有匹配新交互的旧交互(根据您的:match_requests_on
选择)。这就是:all
设计的工作方式,因为不能保证特定磁带仅在您的测试套件中使用,因此可以像这样使用它:
it 'makes a request to /foo' do
VCR.use_cassette("some-host") do
make_request_to("http://some-host.com/foo")
end
end
it 'makes a request to /bar' do
VCR.use_cassette("some-host", :record => :all) do
make_request_to("http://some-host.com/bar")
end
end
在这种情况下,当您it "makes a request to /bar"
运行测试时,它将允许真实地发出请求并记录它,并且当将其持久化到磁盘时,它将取代任何先前记录的 HTTP 请求"http://some-host.com/bar"
,但它会留下任何其他先前记录 HTTP 交互(例如 to "http://some-host.com/foo"
),因为它不想删除此测试中未涉及的 HTTP 交互(因此可能会被完全不同的测试使用)。