2012-12-02 31 views
8

我有一個非常簡單的module我使用VCR gem測試Ruby。錄像機沒有錄像帶

我已根據文檔配置了VCR,但似乎無法獲取錄像帶目錄中的錄像帶。爲了以防萬一,我甚至將磁帶目錄上的權限更改爲777。真奇怪的是,我已經完全刪除卡帶目錄,運行規格,然後創建一個新的卡帶目錄。我使用Typhoeus 0.4.2與Hydra。目前我無法升級Typhoeus。

相關的代碼:

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 

    ... 

我不知道爲什麼盒沒有被寫入。

+2

標題+1。我要關閉主題,並建議您清理唱片頭(或升級到藍光),但我想你是在談論Ruby代碼:) –

+0

LOL!我非常想要解決這個問題,我甚至沒有注意到這一點。對於這個問題,我只是在磁帶上吹了一下,拔掉了電源插頭並將其插回。 – brycemcd

回答

9

問題是,您使用的是Typhoeus作爲您的HTTP客戶端,但掛接到FakeWeb,它只支持Net::HTTP

VCR.configure do |vcr| 
    vcr.hook_into :typhoeus 
end 

hook_into docs列表中的所有選項和掛鉤工作與HTTP客戶端:如果配置了錄像機可以直接掛接到百頭巨怪(因爲它提供了良好的公共API這樣做)。如果您有任何改進文檔的建議以防止他人產生混淆,請告訴我。

+0

AH,這讓人感覺很好。出於某種原因,'hook_into'暗示VCR將需要和使用webmock(或:fakeweb或其他)的設施,無論哪個http客戶端在規範套件以外被使用。無論如何,我已經在https://github.com/vcr/vcr/pull/228上創建了一個pull請求,作爲如何更加清晰的建議(至少對我來說)。感謝您的快速回復! – brycemcd