[英]RSpec/Capybara testing have_selector conundrum
這是來自Michael Hartl第二版的Ruby on Rails教程。 第3版(當前最新版)沒有用RSpec測試,所以我決定使用這本書。
我已經閱讀了用戶的解決方法並知道有不同的方法來編寫測試以使其工作但我想使用have_selector來保持代碼的一致性。 任何解釋/建議都會非常有幫助。 我不明白為什么下面的測試通過了h1元素而不是title元素:
spec.rb:
describe "Static pages" do
describe "Home page" do
it "should have the h1 'Sample App'" do
visit '/static_pages/home'
expect(page).to have_selector('h1', :text => 'Sample App')
end
it "should have the title 'Home'" do
visit '/static_pages/home'
expect(page).to have_selector('title',
:text => "Ruby on Rails Tutorial Sample App | Home")
end
end
home.html的:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ruby on Rails Tutorial Sample App | Home</title>
</head>
<body>
<h1>Sample App</h1>
</body>
</html>
嘗試:
expect(page).to have_selector('title',
:text => "Ruby on Rails Tutorial Sample App | Home",
:visible => false)
由於title標簽位於<head>
元素中,因此它被認為是隱藏的。 指定:visible => false
包括要在have_selector匹配器中考慮的那些標記。
因為現在有一個has_title匹配器,所以更新當前的capybara最佳實踐。
expect(page).to have_title('Ruby on Rails Tutorial Sample App | Home')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.