Rspec使用测试,Capybara使用开发数据库

时间:2016-08-11 01:20:34

标签: ruby-on-rails rspec capybara factory-bot poltergeist

我有一个有趣的问题。我使用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

1 个答案:

答案 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非常适用于您尝试测试外部网站,或者您需要访问子域以测试您的应用程序时 - 修复端口的确适用于防火墙等问题。