2017-05-11 28 views

回答

6

一般與水豚配置在register_server塊服務器。的:彪馬服務器定義水豚提供的是

Capybara.register_server :puma do |app, port, host| 
    require 'rack/handler/puma' 
    Rack::Handler::Puma.run(app, Host: host, Port: port, Threads: "0:4") 
end 

如果您使用的Rails 5.1的系統測試還增加了一個抽象層最重要的是與服務器配置中 ActionDispatch正在做::系統測試::服務器#寄存器,它被定義爲

def register 
    Capybara.register_server :rails_puma do |app, port, host| 
    Rack::Handler::Puma.run(app, Port: port, Threads: "0:1") 
    end 
end 

無論哪種方式,你應該能夠要麼覆蓋當前服務器註冊的一個

Capybara.register_server :rails_puma do |app, port,host| 
    Rack::Handler::Puma.run(app, ...custom settings...) 
end 

或配置您自己的

Capybara.register_server :my_custom_puma do |app, port, host| 
    Rack::Handler::Puma.run(app, ...custom settings...) 
end 

Capybara.server = :my_custom_puma 
+0

謝謝!我並不完全清楚你的意思是「覆蓋當前的服務器註冊之一」 - 你能否顯示一些示例代碼並說明它將進入哪個文件?你是否要重寫'ActionDispatch :: SystemTesting :: Server.register'? –

+0

@JohnBachir只需從上面的代碼重新註冊:rails_puma在你配置你的測試的任何文件中 - 它應該覆蓋註冊Rails –

+0

爲了記錄,我能夠得到這個工作的唯一方法是通過重新定義我自己的服務器':my_custom_puma')並將其放在application_system_test_case.rb的底部。 application_system_test_case.rb或test_helper.rb中的任何其他位置都不起作用,並嘗試重新定義':rails_puma'不起作用。 –