Motomichi Works Blog

その日学習したことについて書いている日記です。誰かの役に立ったらそれはそれで嬉しいです。

RSpec+Capybaraその0002 radioやcheckboxの状態を検証する

参考にさせて頂いたページ

RSpecについて

Capybaraについて

radioやcheckboxがCapybara::ElementNotFoundになる

ラジオボタンチェックボックスは、デザインを適用するときにdisplay:none;にしたり、position:absolute;のlabelタグの下に隠したりすることがよくあります。

Capybara::ElementNotFound のエラーが表示されてラジオボタンチェックボックスが見つけられない場合はinputタグが表示状態か非表示状態か、まずは思い込みを捨ててCSSをきちんと確認することが大切です。

checkedかどうかを検証する

表示されているradioやcheckboxがcheckedであることを検証する

expect(page).to have_checked_field('ラベル文字列')

display:none;のradioやcheckboxがcheckedであることを検証する

visible:falseを第二引数に渡すとdisplay:none;の要素がcheckedかを検証できます。

expect(page).to have_checked_field('ラベル文字列', visible:false)

checkedでないことを検証する

checkedでないということを検証するには、to_notがあります。

expect(page).to_not

フィールド自体が表示されているかを検証する

checkedかどうかは関係なく、要素が表示されているかどうかを検証します。

expect(page).to have_field('ラベル文字列')