Как узнать, израсходовал ли видеомагнитофон все записанные данные? Если тестируемая программа завершает доступ к API или вообще ничего не делает, тест VCR по-прежнему завершается нормально (тест проверяет отсутствие ошибок и сообщение о завершении в конце). Существует множество способов проверить состояние, но то, что тестируемое приложение успешно использует кассету, указывает на гораздо большее, чем любой артефакт состояния, о котором я могу думать.
Как узнать, закончил ли видеомагнитофон кассету
Ответы (1)
Нашел это в исходном коде для insert_cassette
параметров:
@option options :allow_unused_http_interactions [Boolean] Если установлено значение false, возникнет ошибка, если кассета будет извлечена до того, как будут использованы все ранее записанные HTTP-взаимодействия. По умолчанию истинно. Обратите внимание, что когда ошибка уже произошла (как указано в переменной $!
), неиспользованные взаимодействия будут разрешены, чтобы мы не замалчивали исходную ошибку (что почти наверняка более интересно/важно).
и взаимодействует с этой опцией eject_cassette
:
@option options :skip_no_unused_interactions_assertion [Boolean] Если задано true
, то будет пропущено утверждение «нет неиспользуемых HTTP-взаимодействий», включенное опцией кассеты :allow_unused_http_interactions => false
. Это предназначено для использования, когда в вашем тесте была ошибка, но ваша тестовая среда уже обработала ее.
Так что это используется как:
it 'successfully accesses the proper APIs' do
VCR.use_cassette('/some/path', allow_unused_http_interactions: false) do
expect do
expect do
described_class.new(param1, param2).process
end.to_not raise_exception
end.to output(/Done!/).to_stdout
end
end