【发布时间】:2011-12-16 13:20:33
【问题描述】:
给定一个序列Seq[Matcher[A]],我想获得一个Matcher[A],它在序列内的所有匹配器都成功时成功。
编辑
我自己提供的答案似乎有点笨拙,另外如果序列的所有失败匹配器都产生结果会很好
【问题讨论】:
给定一个序列Seq[Matcher[A]],我想获得一个Matcher[A],它在序列内的所有匹配器都成功时成功。
我自己提供的答案似乎有点笨拙,另外如果序列的所有失败匹配器都产生结果会很好
【问题讨论】:
从匹配器序列创建一个新的匹配器的问题是更难找到哪个匹配器失败了。
在我看来,更好的选择是分别匹配每个匹配器,如下所示:
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)
}
您可以从输出中看到匹配器是单独调用的,第一次失败会导致测试失败并显示消息该匹配器。
根据您的情况,为每个匹配器生成预期可能会更好,因此它将执行所有匹配器并向您显示正确的概览,而不仅仅是第一次失败。我没有走那么远(还)。
【讨论】:
好的,我找到了方法:
(matchers: Seq[Matcher[A]]).reduce(_ and _)
不知何故,我认为必须有不同的方式,比如写_.sequence。
【讨论】:
JUnit 也很好玩