2016-03-09 11 views
8

Ich benutze die Rails 5 Beta 3 mit Aktionskabel, die Integration funktioniert gut in der Entwicklung, aber wenn ich versuche, einen Feature-Test durch Capybara zu starten, scheint es nicht die Kanalaktionen zu treffen.Capybara funktioniert nicht mit action_cable

Ich benutze Portergeist und konfiguriert Puma als Capybara-Server. Auch ich benutze es5-shim und es6-shim.

Hat jemand anderes dies erfahren oder kennt einen Workaround?

Danke!

bearbeiten

Im mit diesem Capybara Zweig Puma in Capybara konfigurieren

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 

Ich habe nichts auf config.action_cable.allowed_request_origins gesetzt

+2

Bitte zeigen Sie Ihre Konfiguration von Puma als Capybaras Server –

+2

auch - was hast du config.action_cable.allowed_request_origins auf deine Testkonfiguration gesetzt –

+0

@TomWalpole ich gerade edi Ted meine Frage. Ich denke, ich benutze deine Capybara PR, um Puma zu konfigurieren :). Außerdem ist config.action_cable.allowed_request_origins nicht festgelegt. –

Antwort

11

Zum Testen actioncable mit Capybara Sie sein müssen Verwenden eines Multithread-Webservers. Da Sie eine aktuelle Pull-Anforderung auf Capybara verwenden, die genannten Treiber Registrierung unterstützt müssen Sie den Namen-Server angeben

Capybara.server = :puma 

Für alle nicht Zweig Sie tun können, mit dem Namen-Server mit dem Capybara verwenden

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

Danke nochmal.Hoffe, dass Ihre PR wird zusammengeführt –

+1

Als der Hauptentwickler von Capybara - ich bin derjenige, der bestimmt, wenn es zusammengeführt wird :) Ich muss Dokumentation dafür schreiben, bevor ich es –

+1

@ SergioMárquez ich irgendwie versehentlich Ihre Frage abgestimmt - könnte Sie bearbeiten es leicht, damit ich diese Stimme entfernen kann –

6

Von Capybara v2.7.0 ist die Weitergabe eines Blocks an Capybara::server veraltet (commit).

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

neuen Web-Server registrieren (zB puma) verwenden:

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 zu documentation

+0

In Version 2.7.0 ist Puma bereits ein registrierter Webserver. Capybara.server =: Puma wird gut funktionieren. – efoo