Авто-перезапись видеомагнитофона не перезаписывается после первого интервала

У меня проблема с автоматической перезаписью кассет в 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-взаимодействия, которые не участвуют в этом тесте (и, таким образом, могут использоваться совершенно другим тестом).

Другие вопросы по тегам