我使用的測試是:爲什麼Rspec /水豚給我一個預期的CSS ...返回錯誤?
it { should have_link('Logout', href: logout_url) }
我只是Logout
測試的<a>
標籤的存在爲文本,並在href是logout_url
路徑。我應該使用另一種語法嗎?
寶石:
rails 3.2.6
rspec-rails 2.10.1
capybara 1.1.2
我使用的測試是:爲什麼Rspec /水豚給我一個預期的CSS ...返回錯誤?
it { should have_link('Logout', href: logout_url) }
我只是Logout
測試的<a>
標籤的存在爲文本,並在href是logout_url
路徑。我應該使用另一種語法嗎?
寶石:
rails 3.2.6
rspec-rails 2.10.1
capybara 1.1.2
有很多方法可以做到這一點。我建議(如果你還沒有)熟悉整體capybara dsl以及一些特定的部分,如capybara matchers。
我相信你的測試是細寫爲:
it { should have_link('Logout', href: logout_url) }
只要鏈接的文字真的是「退出」和href是正確指定(見下文)。
根據capybara docs,have_link
的第一個參數就是所謂的locator
。在你的情況下,它是'註銷'。這可以是鏈接本身的文本,也可以是dom元素的#id。所以在你的情況下,你需要在鏈接中有文字'註銷',鏈接有logout_url
鏈接。
請注意,在水豚的地點是區分大小寫,所以請確保您匹配的情況下。
您可能還想考慮是否應該使用logout_url
而不是logout_path
。默認情況下,rails不會爲大多數鏈接生成完整的網址。它只是產生路徑。這裏的區別:
users_url: http://localhost/users
users_path: /users
檢查您的網頁,看看這些類型的URL的是由您的應用程序產生的。
也許這應該是logout_path。
此外,您可以嘗試使用save_and_open_page來了解發生了什麼問題。
我們可能需要更完整的代碼和錯誤輸出。 –