2015-06-08 2 views
1

Как сообщить VCR, что я хочу, чтобы он полностью игнорировал спецификационный файл?Отключить видеомагнитофон для конкретных спецификаций

Я читал post on Google Groups, который предлагает либо разрешить реальные HTTP-запросы, либо отключить видеомагнитофон.

Что было бы гораздо более удобным для использования в видеомагнитофоне, чтобы не вставлять нос, если у спецификации нет тега метаданных :vcr. Я не хочу отключать видеомагнитофон и снова включать его в before/after, так как я не знаю, было ли это заранее. Я не хочу разрешать реальные HTTP-запросы во всех спецификациях, а только некоторые из них.

Есть ли способ сделать видеомагнитофон более избирательным?

ответ

2

Конечно, в вашей конфигурации блока добавить:

VCR.configure do |c| 
    c.allow_http_connections_when_no_cassette = true 
end 

Это AFAIK единственный вариант видеомагнитофон относительно вашего тестового набора. См. docs.

Скорее всего, вы действительно должны рассматривать record modes для поведения, подобного этому, так что это действие.

+0

Спасибо. Дело в том, что у меня есть _one_ spec многих, которые я хочу, чтобы VCR проигнорировал, и мой блок configure находится в моем 'spec_helper.rb', который применяется ко всему. Любые предложения относительно наилучшего способа ограничить эффект этой конфигурации только одной спецификацией? –

+0

Проверьте, что эти парни работают вокруг - https://github.com/vcr/vcr/issues/427 – Anthony

3

Это не самое элегантное решение, но вы можете использовать переменную экземпляра, чтобы вернуть конфигурацию в исходное установка

describe "A group of specs where you want to allow http requests" do 
    before do 
    VCR.configure do |c| 
     @previous_allow_http_connections = c.allow_http_connections_when_no_cassette? 
     c.allow_http_connections_when_no_cassette = true 
    end 
    end 

    after do 
    VCR.configure do |c| 
     c.allow_http_connections_when_no_cassette = @previous_allow_http_connections 
    end 
    end 

    # Specs in this block will now allow http requests to be made 

end 

Я нашел, что это полезно для в то время как я работаю сначала получить API-интерфейс и работающий, и хотите иметь возможность отлаживать запросы, которые я делаю. Как только я вернусь к API, я смогу удалить до и после блоков и использовать видеомагнитофон, как обычно.

Смежные вопросы