2016-03-09 42 views
8

Utilizzo la Rails 5 beta 3 con cavo di azione, l'integrazione funziona bene nello sviluppo ma quando provo a eseguire un test delle funzionalità tramite capybara, sembra che non abbia colpito le azioni del canale.Capybara non funziona con action_cable

Sto usando Portergeist e configurato puma come server di capybara. Inoltre sto usando es5-shim ed es6-shim.

Qualcun altro ha provato questo o conosce una soluzione alternativa?

Grazie!

Modifica

Im usando questo ramo Capybara per configurare Puma in Capybara

Capybara.register_server :puma do |app, port, host| 
    require 'puma' 
    Puma::Server.new(app).tap do |s| 
    s.add_tcp_listener host, port 
    end.run.join 
end 

non ho impostato nulla su config.action_cable.allowed_request_origins

+2

Si prega di mostrare la configurazione del puma come server di Capybaras –

+2

Inoltre - cosa hai impostato config.action_cable.allowed_request_origins nella configurazione di prova –

+0

@TomWalpole I just edi ho fatto la mia domanda Penso che sto usando il tuo PR Capibara per configurare Puma :). Inoltre, config.action_cable.allowed_request_origins non è impostato. –

risposta

11

Per il test actioncable con Capybara è necessario essere usando un server web multithread. Dal momento che si sta utilizzando una richiesta di pull corrente sul Capybara che supporta la registrazione driver di nome è necessario specificare il server di nome da utilizzare

Capybara.server = :puma 

Per tutti coloro che non utilizzano il ramo Capybara con i server di nome che si può fare

Capybara.server {|app, port| 
    require 'puma' 
    Puma::Server.new(app).tap do |s| 
    s.add_tcp_listener Capybara.server_host, port 
    end.run.join 
} 
+0

Grazie ancora.Spero che il tuo PR venga fuso –

+1

Come sviluppatore principale di Capybara - Sono io quello che determina quando viene unito :) Devo scrivere la documentazione per questo prima di unirlo –

+1

@ SergioMárquez In qualche modo accidentalmente ho votato la tua domanda - potrebbe lo modifichi leggermente in modo da poter rimuovere quel voto –

6

Da Capybara v2.7.0 passare un blocco a Capybara::server è deprecato (commit).

Deprecation message: DEPRECATED: Passing a block to Capybara::server is deprecated, please use Capybara::register_server instead

Per registrare nuovo server Web (ad esempio puma) utilizzare:

Capybara.register_server :puma do |app, port, host| 
    require 'puma' 
    Puma::Server.new(app).tap do |s| 
     s.add_tcp_listener host, port 
    end.run.join 
    end 

Link documentation

+0

nella v2.7.0, puma è già un server web registrato. Capybara.server =: puma funzionerà bene. – efoo