Как узнать, закончил ли видеомагнитофон кассету

Как узнать, израсходовал ли видеомагнитофон все записанные данные? Если тестируемая программа завершает доступ к API или вообще ничего не делает, тест VCR по-прежнему завершается нормально (тест проверяет отсутствие ошибок и сообщение о завершении в конце). Существует множество способов проверить состояние, но то, что тестируемое приложение успешно использует кассету, указывает на гораздо большее, чем любой артефакт состояния, о котором я могу думать.


person George Shaw    schedule 09.12.2016    source источник


Ответы (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
person George Shaw    schedule 10.12.2016