Specs2 能否将序列元素与现有匹配器之一进行比较?
Can Specs2 compare sequence elements with one of the existing matchers?
我想在 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" 没有显示任何结果,据我所知,匹配器部分没有任何关于集合的条目。
大多数集合匹配应该可以用 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)
}
这来自混入 Specification
的 MatcherImplicits
特征,但我同意,这不是 well-documented。
我想在 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" 没有显示任何结果,据我所知,匹配器部分没有任何关于集合的条目。
大多数集合匹配应该可以用 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)
}
这来自混入 Specification
的 MatcherImplicits
特征,但我同意,这不是 well-documented。