Не удается записать запросы Whois с видеомагнитофоном? - PullRequest
0 голосов
/ 19 марта 2012

Я пытаюсь использовать 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

1 Ответ

1 голос
/ 19 марта 2012

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

...