无法用录像机录制Whois请求?

时间:2012-03-18 20:46:06

标签: ruby rspec rubygems rspec2 vcr

我正在尝试在Rails之外使用VCR 2.0.0。

当我运行规范时,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下有一个spec文件:

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 个答案:

答案 0 :(得分:1)

我相信您的问题是VCR only records and plays back HTTP connections,而Whois gem uses TCPSocket而不是任何http库VCR知道如何代理。