1. ホーム
  2. rspec

[解決済み] Capybaraを使用して、適切なエラーメッセージとともに要素数をアサートするには?

2023-03-14 02:15:21

質問

カピバラさんでは、このようなことができるのですね。

page.should have_css("ol li", :count => 2)

しかし、例えばそのページにはマッチする要素が1つしかないと仮定すると、このエラーはあまり説明的ではありません。

  1) initial page load shows greetings
 Failure/Error: page.should have_css("ol li", :count => 2)
 expected css "ol li" to return something

この不明瞭なエラーメッセージの代わりに、エラー出力が「When matching 'ol li', expected: 2, found: 1」のようになるようにアサーションを書く方法はないでしょうか。明らかに、私はそのような動作のために自分自身でカスタムロジックを作ることができました - 私はこれを「箱から出して」行う方法があるかどうかを尋ねています。

価値あることとして、私はSeleniumドライバとRSpecを使用しています。

どのように解決するのですか?

私はこの方がずっと好きです。

expect(page).to have_selector('input', count: 12)

https://github.com/jnicklas/capybara/blob/415e2db70d3b19b46a4d3d0fe62f50400f9d2b61/spec/rspec/matchers_spec.rb