Ограничение видеомагнитофона спецификациями

Есть ли способ сделать VCR активным только при вызове через rspec в приложении Rails? Он отлично работает для моих тестов, но я не хочу, чтобы он перехватывал запросы вне этих тестов.

Я получаю сообщение Настоящие HTTP-соединения отключены, если я использую клиент для подключения к моему приложению, а приложение вызывает внешнюю веб-службу.

Спасибо, Марк


person marcantonio    schedule 28.11.2014    source источник


Ответы (2)



Наконец-то я получил эту работу, как и хотел, с Rails. Мне удалось отключить видеомагнитофон (фактически WebMock, который я выбрал для видеомагнитофона), за исключением случаев, когда я запускаю rspec. Для фона я сначала следовал инструкциям здесь при настройке видеомагнитофона.

Сначала я создаю config/initializers/webmock.rb:

# Disable WebMock globally so it doesn't interfere with calls outside of the specs.
WebMock.disable!

Затем я добавил следующее вокруг VCR.use_cassette() (в моем случае это spec_helper.rb:

config.around(:each, :vcr) do |example| name = example.metadata[:full_description].split(/\s+/, 2).join("/").underscore.gsub(/[^\w\/]+/, "_") options = example.metadata.slice(:record, :match_requests_on).except(:example_group) + # Only enable WebMock for the specs. Don't interfere with calls outside of this. + WebMock.enable! VCR.use_cassette(name, options) { example.call } + WebMock.disable! end

Надеюсь, это поможет кому-то.

person marcantonio    schedule 29.11.2014
comment
Отключение webmock и/или VCR в нетестовых средах работает, но гораздо лучшим подходом будет загрузка webmock и VCR только в вашей тестовой среде. Нет причин загружать их в нетестовых средах. - person Myron Marston; 01.12.2014
comment
Проблема в том, что в моей среде разработки мне нужно использовать стороннюю службу для кодирования, в данном случае это песочница платежного шлюза. Я все еще хотел бы использовать эту среду для написания тестов по мере разработки. Кажется, все или ничего с VCR/WebMock по умолчанию. - person marcantonio; 05.12.2014
comment
Загрузка (или нет) VCR/WebMock в вашей среде разработки rails не имеет ничего общего с вашей способностью писать тесты в тестовой среде rails, попадающие в песочницу платежного шлюза. В вашем исходном вопросе говорится, что я не хочу, чтобы он перехватывал запросы вне этих тестов, что звучит так, как будто вы не хотите, чтобы VCR/WebMock был активен в нетестовых средах рельсов. Если это так, не загружать их — лучший способ добиться этого. Если это не так, то я понятия не имею, о чем вы спрашиваете. - person Myron Marston; 07.12.2014
comment
Ваша первая интерпретация вопроса верна. Я просто пытался предоставить некоторый контекст относительно того, почему мне нужна эта функциональность. Мне нужно иметь возможность разрабатывать тесты и получать преимущества от использования VCR, находясь в среде rails для разработки. В нашем рабочем процессе «тестовая» среда rails предназначена для контроля качества и автоматического тестирования, а не для разработки тестов. - person marcantonio; 08.12.2014