簡體   English   中英

RSpec / Capybara測試has_selector難題

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

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