Авто-перезапись видеомагнитофона не перезаписывается после первого интервала
У меня проблема с автоматической перезаписью кассет в vcr
Это мой конфиг:
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
для первого запроса кассета записывается правильно, но после первого интервала времени она не перезаписывает кассету, а просто добавляет новые данные запроса в файл, полностью игнорируя интервал.
1 ответ
Это звучит как re_record_interval
работает так, как было задумано для работы, но это может быть не то, что вы хотите.
Когда вы используете :re_record_interval
опция, видеомагнитофон заставляет :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-взаимодействия (такие как "http://some-host.com/foo"
) потому что он не хочет удалять HTTP-взаимодействия, которые не участвуют в этом тесте (и, таким образом, могут использоваться совершенно другим тестом).