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個であることを確認する感じ。
0 件のコメント:
コメントを投稿