我有一个有趣的问题。我正在使用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在启动“rails server”时尝试使用与本地环境中初始化的相同的URL和端口。在我的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