Не удается записать запросы Whois с помощью видеомагнитофона?

Я пытаюсь использовать VCR 2.0.0 вне Rails.

Кажется, что VCR идеально создает каталог 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

И на всякий случай, если вам интересно, вот метод, который тестируется в lib/availability_checkers/net_checker.rb:

require "whois"

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

person David Tuite    schedule 18.03.2012    source источник


Ответы (1)


Я полагаю, ваша проблема в том, что VCR записывает и воспроизводит только HTTP-соединения, в то время как гем Whois использует TCPSocket и ни одна из http библиотек видеомагнитофона не умеет проксировать.

person dbenhur    schedule 18.03.2012
comment
Вероятно, вы могли бы просто возложить ожидание на сотрудника NetChecker Whois, чтобы изолировать тест от сети, например: Whois.expects(:available?).with('apple.com').returns(false) - person dbenhur; 19.03.2012
comment
Да, похоже, мне придется это сделать. Просто мне нравится выходить немного дальше, когда я тестирую границы своей системы. - person David Tuite; 19.03.2012