2012-12-02 18 views
8

Ho un semplice module Sto testando con Ruby utilizzando la gemma VCR.VCR non registrando cassette

Ho configurato il videoregistratore in base alla documentazione ma non riesco a ottenere una cassetta da registrare nella directory dei cassetti. Ho persino cambiato i permessi sulla directory della cassetta su 777 per ogni evenienza. La cosa veramente strana è che ho completamente rimosso la directory della cassetta, ho eseguito le specifiche e quindi è stata creata una nuova directory di cassette.

Sto usando Typhoeus 0.4.2 con Hydra. Al momento non posso aggiornare Typhoeus.

Il codice rilevante:

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 

    ... 

Non ho idea del perché non vengono scritti cassette.

+2

+1 per il titolo. Stavo andando a chiudere le cose come fuori tema e ti consiglio di pulire le testine dei dischi (o l'aggiornamento a Blu-Ray), ma immagino tu stia parlando del codice Ruby :) –

+0

LOL! Ero così preso dal tentativo di risolvere il problema che non me n'ero nemmeno accorto. Per quel problema, ho appena soffiato sul nastro, scollegato e ricollegato. – brycemcd

risposta

9

Il problema è che si utilizza Typhoeus come client HTTP, ma che si aggancia allo FakeWeb, che fornisce solo il supporto per Net::HTTP. Videoregistratore può collegare direttamente in Tifeo (in quanto fornisce buone API pubbliche per farlo) se si configura:

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

Il hook_into docs elenco di tutte le opzioni e che si aggancia lavoro con il quale HTTP clienti. Se avete suggerimenti per migliorare la documentazione per evitare che altri possano avere questa confusione, fatemelo sapere.

+0

AH, questo ha un senso. Per qualche ragione, 'hook_into' implicava che VCR richiedesse e usasse le funzionalità di: webmock (o: fakeweb o qualsiasi altra cosa) indipendentemente da quale client http fosse usato al di fuori della suite delle specifiche. In ogni caso, ho creato una richiesta di pull su https://github.com/vcr/vcr/pull/228 come suggerimento su come renderlo più chiaro (almeno per me). Grazie per la risposta rapida! – brycemcd

Problemi correlati