我正在尝试在案例类中使用should matchers
case class ListOfByteArrayCaseConfig(
@BeanProperty
permissions: java.util.List[Array[Byte]]
)
使用以下测试用例
val orig = ListOfByteArrayCaseConfig(List(Array[Byte](10, 20, 30)))
val orig2 = ListOfByteArrayCaseConfig(List(Array[Byte](10, 20, 30)))
orig2 should be === orig
显然这会失败,因为两个字节数组的参考方式不同。我想要做的是以某种方式使这项工作不改变测试用例代码并仍然保持案例类。
甚至可能吗? (比如在case类中添加自定义equals方法?)
答案 0 :(得分:1)
我找到了解决方案。显然我可以覆盖案例类
中的equals方法Scala: Ignore case class field for equals/hascode?
虽然它首先摆脱了使用案例类的原因,即简化数据对象。
case class ListOfByteArrayCaseConfig(
@BeanProperty
permissions: java.util.List[Array[Byte]]
) {
override def equals(arg: Any): Boolean = {
val obj = arg.asInstanceOf[ListOfByteArrayCaseConfig]
var i: Int = 0
for (i <- 0 until permissions.size()) {
if (!util.Arrays.equals(permissions.get(i), obj.permissions.get(i))) {
return false
}
}
return true
}
}