作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
验证scala集合的期望值时,assertResult
方法很方便:
"The list" should "be generated correctly" in {
assertResult(List(10, 20)) {
//Some code that should output
List(10, 20)
}
}
如果出现问题,会生成很好的错误消息:
Expected List(10, 20), but got List(10, 30)
不幸的是,它不适用于数组,因为 ==
运算符检查的是同一性,而不是相等性(此行为背后的原因已被讨论过很多,例如此处:Why doesn't Array's == function return true for Array(1,2) == Array(1,2)?)。
因此,类似的数组检查会生成以下错误消息:
Expected Array(10, 20), but got Array(10, 20)
当然,可以使用 should equal
匹配器:
"The array" should "be generated correctly" in {
Array(10, 20) should equal {
//Some code that should output
Array(10, 20)
}
}
但在我看来,它不太方便,因为它更像是一种等式检查而不是期望验证:
Array(10, 20) did not equal Array(10, 30)
ScalaTest 中是否有对数组的断言检查,可以清楚地将预期结果与实际结果分开?
最佳答案
哇,好吧,我实际上认为这是一个错误,因为它与其余断言不一致。不过,这个错误已经存在了大约六七年未被发现。我会修复它,但您在此期间可以做的是调用 .deep。这就是你为 == 使用数组所做的,例如:
scala> Array(1, 2) == Array(1, 2)
res12: Boolean = false
scala> Array(1, 2).deep == Array(1, 2).deep
res13: Boolean = true
scala> assertResult(Array(1, 2)) { Array(1, 2) }
org.scalatest.exceptions.TestFailedException: Expected Array(1, 2), but got Array(1, 2)
...
scala> assertResult(Array(1, 2).deep) { Array(1, 2).deep }
关于arrays - 是否可以使用 assertResult 在 ScalaTest 中检查数组是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21880988/
验证scala集合的期望值时,assertResult方法很方便: "The list" should "be generated correctly" in { assertResult(Lis
我是一名优秀的程序员,十分优秀!