运行Cucumber测试时Rails应用程序的端口

有没有办法在测试中获得在黄瓜测试期间运行rails应用程序的端口? 我试过Capybara.server_port,但那是零。

谢谢。

使用selenium驱动程序时,可以在以下位置找到该端口:

Capybara.current_session.driver.rack_server.port 

当使用webkit驱动程序时,可以在以下位置找到它:

 Capybara.current_session.driver.server_port 

另外,你可以设置

 Capybara.server_port 

已知值并使用它。

我的理解是,如果你使用机架测试,默认的Capybara驱动程序,那么实际上并没有任何真正的Web服务器运行来发出请求。

如果您想以Cucumber / Capybara的身份查看您的应用程序,那么您需要在选定的端口上手动启动它:

 $ RAILS_ENV=test rails s -p 4000 

然后在env.rb中有类似的东西:

 Capybara.configure do |config| config.run_server = false config.app_host = "http://localhost:4000" end