我有一个有趣的问题。我使用Rspec进行测试驱动开发,使用Capybara和Poltergeist进行验收测试。哦,还有FactoryGirl。 Rspec和FactoryGirl正在对测试数据库进行操作,这正是我想要的。问题是验收测试是针对开发数据库进行的。
这导致如下的简单测试失败:
my_class = FactoryGirl.create(:my_class)
visit my_classes_path
expect(page).to have_content(my_class.title)
我甚至使用以下方式查看了截图:
page.save_screenshot("screenshot#{__FILE__}_#{__LINE__}.png")
解 所以显然Capybara试图使用我启动时在本地环境中初始化的相同URL和端口" rails server"。在我的Capybara配置中指定一个不同的端口就可以实现如下所示:
Capybara.configure do |c|
c.run_server = true
c.javascript_driver = :poltergeist
c.default_driver = :poltergeist
c.server_port = 7000
c.app_host = "http://localhost:#{c.server_port}"
end
答案 0 :(得分:2)
对于正常使用,您不必锁定到特定端口或设置app_host。如果未设置app_host,则Capybara默认为http://#{Capybara.server_host}:#{Capybara.server_port}
,默认情况下为http://127.0.0.1:<the端口capybara运行服务器&gt; 。如果您需要使用localhost
而不是127.0.0.1(因为IPv6或其他),那么只需设置
Capybara.server_host = 'localhost'
代替app主机并修复端口。 app_host非常适用于您尝试测试外部网站,或者您需要访问子域以测试您的应用程序时 - 修复端口的确适用于防火墙等问题。