我在录像机中自动重新录制磁带时遇到问题
这是我的配置:
VCR.configure do |c|
c.cassette_library_dir = 'spec/support/vcr_cassettes'
c.hook_into :fakeweb
end
和电话:
VCR.use_cassette 'my_cassette', :re_record_interval => 60 * 30 do
agent = Mechanize.new
start_page = agent.get(START_PAGE)
end
对于第一个请求,磁带被正确记录,但是在第一次间隔时间过去后,它不会重新记录磁带,它只是将新的请求数据附加到文件中,完全忽略间隔。
最佳答案
听起来像 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://some-host.com/bar"
的 HTTP 请求。 ,但它会保留任何其他以前记录的 HTTP 交互(例如到 "http://some-host.com/foo"
的那个),因为它不想删除不参与此测试的 HTTP 交互(因此可能被完全不同的测试使用) .
关于ruby - 第一次间隔后 VCR 自动重新录制不录制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17170203/