我想在包含Array的case类的ScalaTest中断言相等性。 (因此案例类的内置等式匹配器不适用。) 例如:
case class Example(array: Array[Double], variable: Integer)
测试存根:
val a = Example(Array(0.1, 0.2), 1)
val b = Example(Array(0.1, 0.2), 1)
a should equal (b)
按预期失败。所以我实现了一个平等特征:
implicit val exampleEq =
new Equality[Example] {
def areEqual(left: Example, right: Any): Boolean =
right match {
case other: Example => {
left.array should contain theSameElementsInOrderAs other.array
left.variable should be other.variable
true
}
case _ => false
}
}
哪个有效。另一种选择是在"的所有地方用==实现平等特征,应该是"如果在某个地方是假的,则返回false,否则为true。两者的问题在于,当运行测试时,我得到的错误消息是"示例"对象不相等(如果不是)但我想看看它们的区别在哪个元素。
我如何实现这一目标?
感谢您的帮助!
[更新]在实践中,示例包含多个数组和其他字段,我相应地更改了代码。
答案 0 :(得分:0)