2012-12-02 20 views
8

Çok basit bir module var VCR mücevher kullanarak Ruby ile test yapıyorum.VCR kasetleri kaydetmiyor

VCR'ı belgelere göre yapılandırdım, ancak kaset dizini içine kaydedilecek bir kaset elde edemiyorum. Her durumda kaset dizinindeki izinleri 777'ye değiştirdim bile. Gerçekten garip olan şey, kaset dizini tamamen kaldırdım, özellikleri çalıştırdım ve sonra yeni bir kaset dizini oluşturuldu.

Hydra ile Typhoeus 0.4.2 kullanıyorum. Şu anda Typhoeus'u yükseltemiyorum.

ilgili kodu:

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 

    ... 

Ben kasetleri yazılı olmama neden hiçbir fikrim yok.

+2

+1. Konu dışı olarak kapanacak ve kayıt kafalarını temizlemenizi (veya Blu-Ray'a yükseltmenizi) tavsiye ediyorum, ama sanırım Ruby kodu hakkında konuşuyorsunuz :) –

+0

LOL! Bunu fark etmediğim konuyu çözmeye çalışmak için çok sarılıydım. Bu problem için, sadece kasete bastım, fişini taktım ve tekrar taktım. – brycemcd

cevap

9

Sorun, HTTP istemciniz olarak Typhoeus kullanıyorsunuz, ancak yalnızca Net::HTTP için destek sağlayan FakeWeb adresinde çalışıyor olmanızdır.

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

hook_into docs liste tüm seçenekler ve hangi HTTP müşterilerle çalışmayı kanca hangi: (o bunu yaparken iyi kamu API'ler sağlar beri) yapılandırmanız durumunda VCR Typhoeus doğrudan kanca. Başkalarının bu karışıklığı engellemek için dokümantasyonu geliştirmek için herhangi bir öneriniz varsa, lütfen bize bildirin. Başlığı için

+0

AH, bu bir tonluk his veriyor. Bazı nedenlerden dolayı, 'hook_into' VCR'nin şu özellikleri yerine getirdiğini ve kullandığını ima etti: web grubu (veya: fakeweb veya neyse), hangi spec istemcisinin spec paketinin dışında kullanıldığına bakılmaksızın. Her halükarda, https://github.com/vcr/vcr/pull/228 adresinden, daha net bir şekilde (en azından benim için) nasıl yapılacağına dair bir öneri olarak bir çekme isteği oluşturdum. Hızlı cevap için teşekkürler! – brycemcd

İlgili konular