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)
