私はカピバラ テストを作成し、アサーションに Rspec を使用しています。テキストがすべて大文字になる CSS スタイルが適用されているため、テストが失敗します。大文字と小文字を区別しないアサーションになるように、これを書き直すにはどうすればよいですか?
"ALL CAPS".should include('All Caps')
私はカピバラ テストを作成し、アサーションに Rspec を使用しています。テキストがすべて大文字になる CSS スタイルが適用されているため、テストが失敗します。大文字と小文字を区別しないアサーションになるように、これを書き直すにはどうすればよいですか?
"ALL CAPS".should include('All Caps')
phoetのソリューションを改善します。
page.body.should match(%r{#{string}}i)
残念ながら、ここで強調表示されている構文は、それほど正義ではありません(Sublime Textでは完全に正常に見えます)
この問題が発生するのは、次の場合のみです。
ポルターガイストドライバー使用。(これが他のドライバーでも起こるかどうかはわかりません)
期待のためpage
ではなく、検査中:page.body
expect(page).to ...
だから、私がやれば、それはうまくいきexpect(page.body).to ...
、問題を解決します。
これを行うために正規表現を使用するのはどうですか?
"ALL CAPS".should match(/#{Regexp.escape('All Caps')}/i)
アサーションの両端を小文字にするのはどうですか?
"ALL CAPS".downcase.should include('All Caps'.downcase)
また、Capybaraを使用している場合は、大文字と小文字を区別しないマッチャーを使用できます。have_content
<h1>ALL CAPS</h1>
find('h1').should have_content('All Caps')
更新:私は部分的に間違っていたと思います。このことを考慮:
<h1 style="text-transform: uppercase">Title Case</h1>
puts find('h1').text
# TITLE CASE < notice all caps
puts find('h1').has_content?('Title Case') # true
puts find('h1').has_content?('TITLE CASE') # false
puts find('h1').has_content?('title case') # false
返されるテキストがすべて大文字であるのは不思議ですが(CSSの後にどのようにスタイル設定されているか)、マッチャーは実際にはスタイル設定されていないHTMLのテキストに対してテストしています。ソースコードを掘り下げてしばらく過ごしましたが、なぜこれが機能するのかまだわかりません。