9

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

我正在使用 Portergeist 并将 puma 配置为 capybara 的服务器。我也在使用 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 上设置任何东西

4

2 回答 2

12

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

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
}
于 2016-03-09T17:51:13.770 回答
6

从 Capybara v2.7.0 开始,不推荐将块传递给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

链接到文档

于 2016-07-04T14:02:38.953 回答