簡體   English   中英

assert_select和assert_template測試。 到底在做什么

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

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