![](/img/trans.png)
[英]assert_template error in my test. What kind of test is assert_template anyway?
[英]assert_select and assert_template test. What is it doing?
這來自《 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>
? 到底在做什么 它在說什么?
首先將獲取請求發送到用戶路徑
get users_path
在此之后,檢查渲染的模板是否正確。
assert_template 'users/index'
它不是直接檢查url,但是如果您對路由有任何問題,將無法獲得正確的模板。
然后,為了測試分頁,它檢查模板中是否存在一個class為“ pagination”的div元素,該元素由所使用的分頁寶石添加。
assert_select 'div.pagination'
assert_select獲取模板的html元素,並檢查是否存在給定的元素。
最后,它獲取分頁第一頁的用戶(應該在索引頁面上),並針對每個用戶檢查該頁面中是否存在一個鏈接到用戶網址的元素,並在其中包含與用戶名。
User.paginate(page: 1).each do |user|
assert_select 'a[href=?]', user_path(user), text: user.name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.