MustBe scala throwing error despite havite same object

问题描述 投票:0回答:1

我正在 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")))

因为你可以看到两个物体是一样的,所以我不确定到底发生了什么。

有没有人遇到过这样的事情?

scala unit-testing matcher
1个回答
0
投票

输出可能会产生误导,因为它是字符串输出。

例如,字符串

"0"
和数值
0
将以相同的方式出现在 diff 输出中(假设实际上可以将这两个值都放在一个类型中,可能是
Any
..)。

您可以在您的 IDE 中放置一个断点并检查值和类型的相等性以解决此问题。

在你的情况下,我怀疑 UUID 不会按照你期望的方式进行比较,但这只是一个猜测。

© www.soinside.com 2019 - 2024. All rights reserved.