have_contentマッチャでコンテンツ内容を確認する
ページ内容をhave_contentマッチャで確認します。
Capybara / RSpec / Rails / Ruby
連載: Rails4+RSpec+Capybaraでよく使うマッチャ&メソッド22個+α
「」第回の今回はページ内容をhave_contentマッチャで確認します。
ちなみにここでいうコンテンツはページ内のテキストとなります。
have_content
マッチャでのコンテンツ内容確認を行うには
expect(page).to have_content 'Rails4でCapybara入門'
のようにマッチャを使います。
scenario
ブロックで書くと
scenario do
visit '/'
expect(page).to have_content 'Rails4でCapybara入門'
end
となります。
前回のhave_title
マッチャも合わせて使うと
scenario do
visit '/'
expect(page).to have_title '江の島エンジニアBlog'
expect(page).to have_content 'Rails4でCapybara入門'
end
となります。
テストを分ける
上記ではscenario
ブロックの中でhave_title
マッチャとhave_content
マッチャを使いましたが、これだとhave_title
が失敗した時にhave_content
が成功なのか失敗なのかがわかりません。
そういう場合はテストケースを分けて
scenario do
visit '/'
expect(page).to have_title '江の島エンジニアBlog'
end
scenario do
visit '/'
expect(page).to have_content 'Rails4でCapybara入門'
end
とすると良いです。
beforeを使う
テストケースを分けた場合、visit
を2回実行していてDRYではないのでbefore
ブロックを使ってvisit
メソッドをまとめます。
before { visit '/' }
scenario do
expect(page).to have_title '江の島エンジニアBlog'
end
scenario do
expect(page).to have_content 'Rails4でCapybara入門'
end
これでどちらのscenario
も実行前にbefore
ブロック内のvisit
メソッドが実行されます。
itを使う
各scenario
ブロックの中が1行なので、こういう時はit
とsubject
とshould
を使ってすっきり書けます。
before { visit '/' }
subject { page }
it { should have_title '江の島エンジニアBlog' }
it { should have_content 'Rails4でCapybara入門' }
テストを実行する
今回作成したテストを実行すると
view top page
should have title "江の島エンジニアBlog"
should have content "Rails4でCapybara入門"
となりちゃんと両方ともテストに成功しました。
次回はhave_linkマッチャを使ったリンクの確認を行います。
関連記事
- allメソッドで要素リストを取得する(2014/10/11)
- Basic認証が必要なページをテストする(2014/10/11)
- checkメソッドでチェックボックスを選択する(2014/10/11)
- chooseメソッドでラジオボタンから要素を選択する(2014/10/11)
- click_onメソッドでボタンをクリックする(2014/10/11)
- fill_inメソッドでフォームにテキストを入力する(2014/10/11)
- find_buttonメソッドでボタン要素を取得する(2014/10/11)
- find_by_idメソッドでid要素を取得する(2014/10/11)
- find_fieldメソッドでフィールド要素を取得する(2014/10/11)
- find_linkメソッドでリンク要素を取得する(2014/10/11)
- findメソッドでオブジェクトを取得する(2014/10/11)
- have_buttonマッチャで指定したボタンを確認する(2014/10/11)
- have_checked_fieldマッチャで指定したチェックボックス/ラジオボタンを確認する(2014/10/11)
- have_contentマッチャでコンテンツ内容を確認する(2014/10/11)
- have_cssマッチャで指定したタグの内容を確認する(2014/10/11)
- have_fieldマッチャで指定した入力フィールドを確認する(2014/10/11)
- have_linkマッチャでリンク内容を確認する(2014/10/11)
- have_selectマッチャで指定したセレクトボックスの選択内容を確認する(2014/10/11)
- have_titleマッチャでタイトル内容を確認する(2014/10/11)
- have_unchecked_fieldマッチャで指定したチェックボックス/ラジオボタンを確認する(2014/10/11)
- ログインが必要なページをテストする(2014/10/11)
- find&nativeメソッドでmeta要素をテストする(2014/10/11)
- nativeメソッドでネイティブオブジェクトを取得する(2014/10/11)
- selectメソッドでセレクトボックスから要素を選択する(2014/10/11)
- uncheckメソッドでチェックボックスを選択解除する(2014/10/11)