在第5章末尾,有一些练习可以添加这些测试:
click_link 'Contact'
expect(page).to have_title(full_title('Contact'))
click_link 'Home'
click_link 'Sign up now!'
expect(page).to have_title(full_title('Sign Up'))
click_link 'sample app'
expect(page).to have_title(full_title(''))
end
full_title()的定义如下:
def full_title(page_title)
base_title = "Ruby on Rails Tutorial Sample App"
if page_title.empty?
base_title
else
"#{base_title} | #{page_title}"
end
end
“立即注册!”按钮/链接将我带到一个包含此源html的页面:
<!DOCTYPE html>
<html>
<head>
<title>Ruby on Rails Tutorial Sample App | Sign Up</title>
...
</head>
<body>
<header class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<div class="container">
<a href="#" id="logo">sample app</a>
...
</html>
那么如何点击“示例应用”链接,使用href =“#”,转到标题所在的页面:
Ruby on Rails教程示例应用程序
即。主页?
答案 0 :(得分:0)
啊...... has_title()会进行部分匹配,即has_title()检查页面上的标题是否包含指定的文本。因为注册页面上的标题是:
Ruby on Rails教程示例应用程序|注册
...包含full_title(''),即Ruby on Rails Tutorial Sample App
,因此测试:
click_link 'sample app'
expect(page).to have_title(full_title(''))
通过。这是测试中的一个BUG。应该增加一个额外的测试:
click_link 'sample app'
expect(page).to have_title(full_title(''))
expect(page).not_to have_title("|") #<--HERE
然后会失败。要使附加测试通过,您需要更改此_header.html.erb
部分:
<header class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<div class="container">
<%= link_to "sample app", "#", id: "logo" %> #<--CHANGE THE LINK HERE
到此:
<header class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<div class="container">
<%= link_to "sample app", root_path, id: "logo" %>
更改后,如果您点击任意页面上的SAMPLE APP
徽标,您的浏览器将转到主页。