1
假设我有一个功能foo:() -> Map[String, A]
,其中A
是特质。与规格2匹配映射
trait A { def x: Int, def y: Int }
现在我需要写一个specs2
规范,以确保foo
返回具有两个预期对的地图。请注意,我不知道值的实际类型。
可惜我没弄明白如何使用havePairs匹配在这种情况下,所以我写:
"test foo" in {
val m = foo()
def test(a: A, x: Int, y: Int) = (a.x must_== 0) and (a.y must_== 1)
test(m("key1"), 0, 1)
test(m("key2"), 3, 5)
}
此代码是丑陋的。你会如何改变它?
我想我应该写一个自定义匹配为A
和新havePairs
匹配,这将使用此A
-matcher相匹配的对数值。是否有意义 ?
测试(图(“键1),0,1)是没有有效的Scala代码。你错过的东西,而粘贴?定义** VAL地图**是危险的,因为它可以得到混合了经常使用的功能** map **。 – 2014-10-22 13:48:47
@AndreasNeumann Thanks。Fixed。 – Michael 2014-10-22 13:49:45
您想让测试适用于*特质A *还是意味着要成为*类型参数*? – 2014-10-22 14:20:21