で複数の可能な結果のテスト私はテストに新たなんだ、そう私と一緒にクマ:)カピバラ/ RSpecの - have_content
私は、ページ上のランダムなコンテンツをテストしたいと思います。たとえば、 'foo'または 'bar'のいずれかのコンテンツを表示するページをテストしてみましょう。以下のような
何かが、私は
page.should (have_content('foo') || have_content('bar'))
任意のアイデアを実現しようとしている何ですか?
で複数の可能な結果のテスト私はテストに新たなんだ、そう私と一緒にクマ:)カピバラ/ RSpecの - have_content
私は、ページ上のランダムなコンテンツをテストしたいと思います。たとえば、 'foo'または 'bar'のいずれかのコンテンツを表示するページをテストしてみましょう。以下のような
何かが、私は
page.should (have_content('foo') || have_content('bar'))
任意のアイデアを実現しようとしている何ですか?
ご使用の準備ができていませんMatherです。しかし、あなたは自分自身を焼くことができます。 satisfyを使用して
:
page.should satisfy {|page| page.has_content?('foo') or page.has_content?('bar')}
def have_foo_or_bar
simple_matcher("check content has foo or bar") { |page| page.has_content?('foo') or page.has_content?('bar') }
end
describe page
it "should have foo or bar" do
page.should have_foo_or_bar
end
end
編集:has_content
は正規表現を受け入れ、あなたがpage.should have_content(/foo|bar/)
使用して満足しています。 NoMethodErrorsを吐き出すので、simple_matcherを動作させることができませんでした。私の理解から、メソッドは廃止されましたか?カスタムエラーメッセージにsimple_matcherを使用することをお勧めします。とにかく、助けてくれてありがとう! – Viet
私があなたに与えたリンクは、時代遅れです。申し訳ありません:(Googleがそれを上に表示する理由を知らない、それを更新する必要があります:)現在のバージョンは2.8 [RSpec Expectations 2.8](https://www.relishapp.com/rspec/rspec-expectations)です。 simple_matcherに最も近いのは[define matcher](https://www.relishapp.com/rspec/rspec-expectations/docs/custom-matchers/define-matcher)です。 –
を確認することができますので、私はこれと同じ質問があったが実現それはprobですあなたの仕様にif文を追加する方がより簡単に&弾力性があります。
it 'can complete my incredible form' do
visit '/testing_path'
#...dostuff...
if object_im_testing.contains_my_condition?
current_path.should eq('/special_condition_url')
else
current_path.should eq('/normal_condition_url')
end
end
これは、別の見通しに役立ちます。最も簡単な解決法が通常最高です。
あなたの質問のタイトルは少し誤解を招くものです。それは統計とは関係ありません。右?それを「複雑な状態をテストする」か何でも(私はタイトルを作るのが悪い)と呼んでください。あなたの質問に対する答えを探している他の人について考えてみてください。 –
合意。新しいタイトルが十分であることを願っています。 – Viet