我正在 Scala 中运行一些单元测试,我面临着一个奇怪的行为, 我有一个类定义如下:
final class ComputationResult(Team: team, scoreResults: ScoreResults, idToLabel: IdToLabel)
IdToLabel 的定义如下:
final case class IdToLabel(totalLabel: Option[String],
buyLabels: Option[Map[String, UUID]],
customLabels: Option[Array[String]])
我正在运行一些单元测试来比较 ComputationResult 类的两个对象。 但是尽管相同,我还是收到失败消息: 在做了一些调试之后,我发现它表明两个对象的 IdToLabel 字段不相同,并输出以下错误消息:
Expected :IdToLabel(Some("Total"), Some(Map("020e748f-988c-4851-93fa-73ed84a3f6f7" -> 020e748f-988c-4851-93fa-73ed84a3f6f7)), Some(Array("grVdW7KlYIw6")))
Actual :IdToLabel(Some("Total"), Some(Map("020e748f-988c-4851-93fa-73ed84a3f6f7" -> 020e748f-988c-4851-93fa-73ed84a3f6f7)), Some(Array("grVdW7KlYIw6")))
因为你可以看到两个物体是一样的,所以我不确定到底发生了什么。
有没有人遇到过这样的事情?
输出可能会产生误导,因为它是字符串输出。
例如,字符串
"0"
和数值 0
将以相同的方式出现在 diff 输出中(假设实际上可以将这两个值都放在一个类型中,可能是 Any
..)。
您可以在您的 IDE 中放置一个断点并检查值和类型的相等性以解决此问题。
在你的情况下,我怀疑 UUID 不会按照你期望的方式进行比较,但这只是一个猜测。