Capybaraでテキストを完全一致でテストする方法
はじめに
ほぼ同じテキストが並んでいるページをそれぞれテストするときなど、テキストを部分一致ではなく、完全一致でテストしたい時があります。
調べ方が悪かったのか検索しても公式のドキュメントしか出てこなかったので備忘録。
exact_textオプションを使おう
assert_selectorのオプションで、text
ではなく、exact_text
を使う。これだけです。
部分一致の例
test 'visiting the index' do visit reports_path assert_selector 'h1', text: '日報' end
これだと日報
を部分一致でテストするので、日報だけでなく、日報一覧
、日報詳細
なんかも通ってしまいます。
完全一致の例
test 'visiting the index' do visit reports_path assert_selector 'h1', exact_text: '日報' end
exact_text
を使うと、日報
のみ通り、日報詳細
なんかはFになってくれます。
参考
Method: Capybara::Node::Matchers#assert_selector — Documentation for capybara (3.35.3)
Module: Capybara::Node::Finders — Documentation for capybara (3.35.3)