カテゴリー:
Rails
タグ:
 Rails Capybara not_to has_no_css

このエントリーをはてなブックマークに追加
更新日時:
2015年01月17日(土)
作成日時:
2015年01月17日(土)

前の記事 / 次の記事

Capybaraのnot_toとbe_has_no_cssについて
今までいまいち違いを認識しないで使っていたのだけど、
嵌まったのでメモ。

とりあえず今回直面した部分だけ。

cssの有無を確認する際に、
not_toとbe_has_no_cssではオプションの扱いが違う。

例えばnot_toを使って

it { is_expected.not_to be_has_css "h1#title", text: "Under Construction" }

とした時、

<h1>Under Construction</h1>

に一致する要素が存在しないことを期待。
また、be_has_no_cssを使って

it { is_expected.to be_has_no_css "h1#title", text: "Under Construction" }  

とした時は、まず要素

<h1></h1>

が存在しないことを期待し、もし存在した場合は要素のtextに

Under Construction

が「含まれない」ことを期待。

両者は同じじゃないかと思うかも知れないけど違う。
be_has_no_cssを使った場合は次の場合もテストを通る。

<h1>Under Construction!!</h1>

「含まれない」ことを期待するので、含まれれば通る。
not_toを使った場合は通らない。

わかめ。