2017-07-12 2 views
0

だから、私は通常、例文を "アサート"するときに3〜4つの異なる例を見ています。Capybara "Matchers"の混乱

カピバラのドキュメントにも(have_textあり、明らかhave_contentが同じである)を超える1

assert_text('foo')

page.has_text?('bar')

page.should have_content('baz')に言及

expect(page).to have_content('boop')

だから... ...それは同じものをチェックする4つの異なる方法です。私はexpectがrspec matcherであることを知っています...しかし、残りはどうですか?私は何を使用すべきですか?カピバラの文書は、残念ながらそれらの違いには関わらない。

ありがとうございます!

答えて

1

assert_text('foo')は、一般にminitestで使用するアサーションです。

page.has_text?('bar')はtrueまたはfalseを返す単なる方法です。ページ上のテキストの存在または不在に基づいて動作を変更する場合は、これを使用します。アプリをテストするときにはあまり頻繁には使用されません。なぜなら、ページ上で何を期待し、コンテンツに基づいて異なる動作を実行する必要がないからです。自動化/掻き取りを行う場合に便利です。

page.should have_content('baz')(明らかにhas_contentにはhas_textがあります) - あなたが述べたように、have_textはhave_contentのエイリアスですので、好きな方を使用できます。 have_contentはRSpecマッチャーであり、RSpecを使用する場合にのみ使用されます。あなたが」だから、現在のRSpecの構文を

からshouldは.TO have_content(「・ブープ」)(ページ)を期待するすべてのオブジェクトにshould方法にパッチを当てる必要な古いRSpecの構文で、以来expect

に取って代わられました最小のテストフレームワークを使用する場合は、assert_xxxスタイルメソッドを使用してください。expectスタイルまたはshouldスタイルのいずれかを使用することができますが、新しいものについてはおそらくexpectスタイルを使用します。