Capybara没有使用action_cable

我正在使用带有动作电缆的Rails 5 beta 3,这种集成在开发中运行良好,但是当我尝试通过capybara运行function测试时,它似乎没有达到通道操作。

我正在使用Portergeist并将puma配置为capybara的服务器。 我也在使用es5-shim和es6-shim。

有没有其他人经历过这个或知道任何解决方法?

谢谢!

编辑

我正在使用这个水豚分支来配置Capybara中的Puma

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 

我没有在config.action_cable.allowed_request_origins上设置任何内容

要使用Capybara测试actioncable,您需要使用multithreadingWeb服务器。 由于您在Capybara上使用支持注册命名驱动程序的当前pull请求,因此您需要指定要使用的命名服务器

 Capybara.server = :puma 

对于没有使用带有命名服务器的capybara分支的人,你可以做到

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

从Capybara v2.7.0传递一个块到Capybara Capybara::server不推荐使用( commit )。

弃用消息 : DEPRECATED: Passing a block to Capybara::server is deprecated, please use Capybara::register_server instead

要注册新的Web服务器(例如puma ),请使用:

  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 

链接到文档