给定一个序列Seq[Matcher[A]]
我想获得一个Matcher[A]
,当序列中的所有匹配器都成功时,它会成功。
我自己提供的答案看起来有点笨拙,而且如果序列中所有失败的匹配器都产生了结果,那将是很好的
答案 0 :(得分:1)
好的,我找到了办法:
(matchers: Seq[Matcher[A]]).reduce(_ and _)
不知怎的,我认为必须有不同的方式,比如写_.sequence
。
答案 1 :(得分:1)
从匹配器序列创建新匹配器的问题是,找到哪个匹配器失败变得更加困难。
我认为更好的选择是分别匹配每个匹配器:
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)
}
您可以从输出中看到匹配器是单独调用的,第一次失败会导致测试失败并显示该匹配器的消息。
根据具体情况,为每个匹配器生成Expectations甚至可能更好,因此它将全部执行它们并向您显示正确的概述,而不仅仅是第一次失败。我还没走那么远(还)。