这来自Hartl教程:
这是我的测试:
test "index including pagination" do
log_in_as(@user)
get users_path
assert_template 'users/index'
assert_select 'div.pagination'
User.paginate(page: 1).each do |user|
assert_select 'a[href=?]', user_path(user), text: user.name
end
end
这是我的代码,它是index.html.erb。我没有展示application.html.erb。
<% provide(:title, 'All users') %>
<h1>All users</h1>
<%= will_paginate %>
<ul class="users">
<% @users.each do |user| %>
<li>
<%= gravatar_for user, size: 50 %>
<%= link_to user.name, user %>
</li>
<% end %>
</ul>
<%= will_paginate %>
assert_template在做什么?
这是来自文档:
断言请求是使用适当的模板呈现的 文件或部分。
是检查视图的名称还是部分名称?还是检查URL?
什么是assert_select在这做什么?这来自文档:
选择元素并使一个或多个相等的断言 测试
是否检查页面上是否存在<div class=pagination>
?它在做什么?什么是主张?
答案 0 :(得分:2)
首先向用户路径发送get请求
get users_path
在此检查之后,渲染的模板是正确的。
assert_template 'users/index'
不是直接检查网址,但如果您在路由方面遇到任何问题,则无法获得正确的模板。
然后,为了测试分页,它检查模板中是否存在一个class =“pagination”的div元素,这个元素是由所使用的paginations gems添加的。
assert_select 'div.pagination'
assert_select获取模板的html元素,并检查给定元素是否存在。
最后,它获取分页的第一页的用户(应该在索引页面上的用户),并且每个用户检查页面中是否有一个元素链接到用户的url并且封闭了与用户名对应的文本。
User.paginate(page: 1).each do |user|
assert_select 'a[href=?]', user_path(user), text: user.name