11

module私は、 VCRgemを使用して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  

    ...

なぜカセットが書かれていないのかわかりません。

4

1 に答える 1

10

問題はTyphoeus、HTTPクライアントとして使用しているが、にフックしていることです。FakeWebこれは、のサポートのみを提供しNet::HTTPます。VCRは、次のように構成すると、Typhoeusに直接接続できます(これを行うための優れたパブリックAPIを提供するため)。

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

hook_intoドキュメントには、すべてのオプションと、どのフックがどのHTTPクライアントで機能するかがリストされています。他の人がこの混乱を起こさないようにドキュメントを改善するための提案があれば、私に知らせてください。

于 2012-12-02T02:53:03.810 に答える