Не можете да записвате Whois заявки с VCR?

Опитвам се да използвам VCR 2.0.0 извън Rails.

Видеорекордерът изглежда създава идеално директорията 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)


Смятам, че проблемът ви е, че видеорекордерът записва и възпроизвежда само HTTP връзки, докато Whois gem използва TCPSocket и нито една от http библиотеките VCR не знае как да прокси.

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