水豚不与 action_cable 一起工作

Capybara not working with action_cable

我正在使用带动作电缆的 Rails 5 beta 3,集成在开发中运行良好,但是当我尝试 运行 通过水豚进行功能测试时,它似乎没有点击频道操作。

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

有没有其他人遇到过这种情况或知道任何解决方法?

谢谢!

编辑

我正在使用这个 capybara 分支在 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,您需要使用多线程网络服务器。由于您在支持注册命名驱动程序的 Capybara 上使用当前拉取请求,因此您需要指定要使用的命名服务器

Capybara.server = :puma

对于不使用带有命名服务器的水豚分支的任何人,您可以这样做

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::server 已被弃用 (commit)。

Deprecation message: 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

Link 到 documentation