我有一个非常简单的module,我正在使用VCR用Ruby进行测试。
我已经根据文档配置了VCR,但似乎无法在cassette目录中获得要录制的磁带。我甚至将cassette目录的权限更改为777以防万一。真正奇怪的是,我已经完全删除了cassette目录,运行specs,然后创建了一个新的cassette目录。
我使用的是带有Hydra的Typhoeus 0.4.2。我现在不能升级台风。
相关代码:
require 'rspec'
require 'vcr'
require_relative File.join("..", "crawl_handler")
VCR.configure do |c|
c.cassette_library_dir = "spec/vcr_cassettes"
c.hook_into :fakeweb
c.allow_http_connections_when_no_cassette = false
end
... # => other describe statements
describe "#handle_http_response" do
before(:each) do
get_some_response = lambda {
# NOTE: typhoeus v. 0.5 is MUCH less setup :)
VCR.use_cassette("bme") do
request = Typhoeus::Request.new("www.bing.com")
hydra = Typhoeus::Hydra.new
hydra.queue(request)
hydra.run
response = request.response
end
}
@message = @subject.handle_http_response("www.bing.com", get_some_response.call)
end
it "returns a message hash" do
@message.should be_kind_of Hash
end
...我不知道为什么录音带没有被写出来。
发布于 2012-12-02 10:53:04
问题是您使用Typhoeus作为您的HTTP客户端,但是连接到FakeWeb,它只提供对Net::HTTP的支持。如果您配置VCR,它可以直接连接到Typhoeus (因为它提供了很好的公共API):
VCR.configure do |vcr|
vcr.hook_into :typhoeus
endhook_into docs列出了所有选项,以及哪些钩子可以与哪些HTTP客户端一起工作。如果您有任何改进文档的建议,以防止其他人有这种困惑,请让我知道。
https://stackoverflow.com/questions/13665667
复制相似问题