我想在specs2测试中比较2个双精度序列,类似于:
actualValues must containTheSameElementsAs(expectedValues, _ beCloseTo _)
我可以编写像
这样的手动比较actualValues must containTheSameElementsAs(expectedValues, (a, b) => math.abs(a - b) < 0.001)
但是这似乎有点无意义,因为beCloseTo已经可用。
更广泛地说,Specs2有很好的文档来源吗?我查看了the user guide,但是对于“containsAllOf”的搜索没有显示任何结果,并且匹配器部分没有任何关于集合的条目,据我所知。
答案 0 :(得分:1)
大多数收集匹配应该用contain
+组合子表达。在这种情况下,您可以写
List(1.3, 1.7) must contain(beCloseTo(1.5 +/- 0.5)).forall
其中forall
测试每个元素。如果您想测试只有一个元素满足您的属性,则可以将forall
替换为atLeastOnce
。
如果你想在你的陈述中尽快出现“forall”这个词,你也可以这样写它
forall(List(1.0, 2.0)) { n =>
n must beCloseTo(1.5 +/- 0.5)
}
这来自混合到MatcherImplicits
的{{1}}特征,但我同意,这没有详细记录。