[英]Rspec using test, Capybara using development database
我有一個有趣的問題。 我正在使用Rspec進行測試驅動開發,使用帶有Poltergeist的Capybara進行驗收測試。 哦,還有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")
解決方案因此,當我啟動“rails server”時,顯然Capybara試圖使用在我的本地環境中初始化的相同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
對於正常使用,您不必鎖定到特定端口或設置app_host。 如果未設置app_host,則Capybara默認為http://#{Capybara.server_host}:#{Capybara.server_port}
默認情況下為http://127.0.0.1:<端口capybara運行服務器>。 如果您需要使用localhost
而不是127.0.0.1(因為IPv6或其他東西),那么只需設置
Capybara.server_host = 'localhost'
而不是app主機和修復端口。 app_host非常適用於您嘗試測試外部網站,或者您需要訪問子域以測試您的應用程序時 - 修復端口的確適用於防火牆等問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.