2012-03-18 2 views
0

Я пытаюсь использовать VCR 2.0.0 за пределами Rails.Невозможно записать запросы Whois с видеомагнитофоном?

Видеомагнитофон, похоже, прекрасно создает каталог vcr_cassettes, когда я запускаю спецификации. Тем не менее, тесты, похоже, по-прежнему попадают в сеть, и в каталоге кассет никогда нет никаких кассет yaml.

Любые идеи, что я делаю неправильно?

Вот пример меня работает спецификации в вопросе:

rm -r spec/fixtures/vcr_cassettes 

rspec spec/lib/availability_checkers/net_checker_spec.rb 
...* 
Finished in 1.83 seconds 
3 examples, 0 failures, 0 pending 

ls spec/fixtures/vcr_cassettes 
=> # created but empty 

У меня есть spec/support/vcr_helper.rb:

require "vcr" 

VCR.configure do |c| 
    c.cassette_library_dir = 'spec/fixtures/vcr_cassettes' 
    c.hook_into :webmock 
end 

И у меня есть файл спецификаций под spec/lib/availability_checkers/net_checker_spec.rb:

require "availability_checkers/net_checker' 
require "support/vcr_helper" 

describe NetChecker, "check" do 
    it "should return false if the domain is unavailable" do 
    VCR.use_cassette("unavailable_domain") do 
     NetChecker.check("apple.com").should be_false 
    end 
    end 
end 

И просто вы можете заинтересовать, вот метод, протестированный в:

require "whois" 

class NetChecker 
    def check(host) 
    # this part hits the network 
    return Whois.available?(host) 
    rescue Whois::Error => e 
    return nil 
    end 
end 

ответ

0

Я считаю, что ваша проблема в том, что VCR only records and plays back HTTP connections, в то время как Whois gem uses TCPSocket и не любой из HTTP библиотек VCR знает, как прокси-сервер.

+0

Звуки о праве на меня. Благодарю. –

+1

Возможно, вы просто можете просто вычислить простое ожидание от соискателя Whois NetChecker, чтобы изолировать тест от сети, например: «Whois.expects (: доступно?). С (« apple.com »). Возвращает (false)' – dbenhur

+0

Да выглядит как я собираюсь это сделать. Просто мне нравится немного разобраться, когда я тестирую по краям моей системы. –