我在第五章结束时做了练习。我应该测试链接转到正确的页面。这是我的测试代码。
require 'spec_helper'
describe "LayoutLinks" do
it "should have the right links on the layout" do
visit root_path
click_link "About"
response.should have_selector('title', :content => "About")
click_link "Home"
response.should have_selector('title', :content => "Home")
click_link "Help"
response.should have_selector('title', :content => "Help")
click_link "Contact"
response.should have_selector('title', :content => "Contact")
click_link "Sign up now!"
response.should have_selector('title', :content => "Sign up")
end
end
除最后一次测试外,一切都通过了。它说无法找到文本“立即注册!”的链接。 。我知道该页面确实有“立即注册!”链接。我认为它可能在源代码中呈现不同,但是当我查看源代码时它看起来很正常<a href="/signup" class="signup_button round">Sign up now!</a>
。根据我的理解,它应该点击链接,然后测试标题是否匹配:内容符号。我误解了什么吗?
这是我得到的错误:
Failures:
1) LayoutLinks should have the right links on the layout
Failure/Error: click_link "Sign up now!"
Webrat::NotFoundError:
Could not find link with text or title or id "Sign up now!"
答案 0 :(得分:9)
我认为问题在于“立即注册!”事实上,链接并非在所有页面上都有,并且此测试实际上导航了页面。
至少在我之前运行的本教程版本中,该链接仅在主页上。
如果您在最后visit root_path
之前添加click_link
,则可能会有效。
更好的测试是检查与主页相关的独立测试。
答案 1 :(得分:0)
此外,标题文字为"Sign Up"
。资本'U'。
该行必须是:
response.should have_selector('title', :content => "Sign Up")
如果在此visit root_path
"Home"
的建议
答案 2 :(得分:0)