Capybara не работает с кабелем действия

Я использую Rails 5 beta 3 с кабелем действия, интеграция отлично работает в разработке, но когда я пытаюсь запустить тест функций через capybara, он, похоже, не попадает в действия канала.

Я использую Portergeist и настроил Puma в качестве сервера capybara. Также я использую es5-shim и es6-shim.

кто-нибудь еще сталкивался с этим или знает решение?

спасибо!

редактировать

Im, используя эту ветку capybara для настройка Puma в 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

Я ничего не установил в config.action_cable.allowed_request_origins

2 ответов


для тестирования actioncable с Capybara вам нужно использовать многопоточный веб-сервер. Поскольку вы используете текущий запрос pull на 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
}

из Capybara v2.7.0 передача блока в Capybara::server устарел (commit).

сообщение об осуждении: DEPRECATED: Passing a block to Capybara::server is deprecated, please use Capybara::register_server instead

зарегистрировать новый веб-сервер (например,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

ссылке документация