簡體   English   中英

Rspec使用測試,Capybara使用開發數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM