2012-12-02 10 views
8

私は非常にシンプルですmodule私はRubyでVCR gemを使ってテストしています。VCRはカセットを記録していません

私はドキュメントに従って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のタイトル。私はトピックとしてclosevoteし、レコードヘッド(またはブルーレイにアップグレード)をきれいにすることをお勧めしますが、私はあなたがルビーのコードについて話していると思います:) –

+0

LOL!私はそのことに気づかなかったという問題を解決しようと努力した。その問題のために、私はテープを吹き飛ばし、電源プラグを抜いてプラグを差し込んだ。 – brycemcd

答えて

9

問題は、HTTPクライアントとしてTyphoeusを使用していますが、Net::HTTPのサポートのみを提供するFakeWebにフックすることです。 (それはそうするためには良いパブリックAPIを提供するので)VCRは、あなたがそれを設定した場合Typhoeusに直接フックすることができます。

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

すべてのオプションとHTTPクライアントと仕事をフックhook_into docsリストを。他の人がこの混乱を避けるために文書を改善するための提案があれば、教えてください。

+0

AH、それは意味をなさない。なんらかの理由で、 'hook_into'は、VCRがどのHTTPクライアントが仕様スイートの外で使われていたかに関わらず、webmock(または:fakewebなど)の機能を必要とし、使用することを暗示していました。とにかく、私はhttps://github.com/vcr/vcr/pull/228でプルリクエストを作成しました(少なくとも私にとっては)明確にする方法の提案です。早速のお返事ありがとうございます! – brycemcd

関連する問題