5

シーケンスを指定すると、シーケンス内のすべてのマッチャーが成功したときに成功するSeq[Matcher[A]]シングルを取得したいと考えています。Matcher[A]

編集

私自身が提供した答えは少し不器用に思えます。さらに、シーケンスのすべての失敗したマッチャーが結果を生成した場合はいいでしょう

4

2 に答える 2

2

マッチャー シーケンスから新しいマッチャーを作成する際の問題は、失敗したマッチャーを見つけるのが難しくなることです。

私の意見では、より良いオプションは、次のように各マッチャーに対して個別にマッチングすることです。

val matchers: Seq[Matcher[Boolean]] = Seq(
  ((_: Boolean).equals(false), "was true 1"),
  ((_: Boolean).equals(true), "was false 2"),
  ((_: Boolean).equals(true), "was false 3")
)

"work with matcher sequence" in {
  matchers.foreach(beMatching => false must beMatching)
}

出力から、マッチャーが個別に呼び出され、最初の失敗によってテストが失敗し、そのマッチャーのメッセージが表示されることがわかります。

ケースによっては、マッチャーごとに期待値を生成する方が良い場合もあります。そのため、最初の失敗だけでなく、それらすべてを実行して適切な概要を表示します。私はそこまで行っていません(まだ)。

于 2013-02-15T12:48:15.497 に答える
2

わかりました、私は方法を見つけました:

(matchers: Seq[Matcher[A]]).reduce(_ and _)

どういうわけか、書くなど、別の方法が必要だと思いました_.sequence

于 2011-10-27T14:10:43.190 に答える