2018年8月24日金曜日

assert_select について覚え書き(Ruby on Rails, Minitest)

assert_select を使ったテストについてメモ。


<div class="container">
  <ul>
    <% if logged_in? %>
      <li id="user_info">Logged in as: <%= current_user.email %></li> <!-- これが表示されている/いないをテストしたい -->
      <li><%= link_to "Log out", logout_path, method: :delete %></li>
    <% else %>
      <li><%= link_to "Log in", login_path %></li>
    <% end %>
  </ul>
</div>

「表示されている」かつ「文言が正しい」ことは、これでテストできた。


assert_select "li#user_info", "Logged in as: " + @user.email

「表示されていない」は、これだとうまくいかない


assert_select "li#user_info", "Logged in as: " + @user.email, count: 0

Expect 0 to be >=1 だったかな?1個以上あることが期待値とされてしまう。
二つ目の引数 "Logged in as: " + @user.email, を条件の感覚で書いていたけど、おそらく期待値となるメッセージとして扱われてて、最後の count: 0 が使われてない。

これでうまくいった。


assert_select "li#user_info", count: 0

id="user_info"<li> 要素自体が0個であることを確認する感じ。

参考: Rails テスティングガイド | Rails ガイド

0 件のコメント:

コメントを投稿