ScalaTest断言由于物理地址而不匹配

时间:2014-11-24 14:27:02

标签: scala assert scalatest

我正在运行ScalaTest,声明我的演员返回了正确的数据类型。

名为“testActor”的actor将数据从SortedMap [Long,SortedMap [String,Double]]转换为SortedMap [String,Array [Double]]

目前的代码是:

val data: SortedMap[Long, SortedMap[String, Double]] = SortedMap (1000L -> SortedMap("c1" -> 1., "c2" -> 2.1), 2000L -> SortedMap("c1" -> 1.1), 3000L -> SortedMap("c1" -> 0.95))
val expectedResult = SortedMap("t1" -> Array(1., 1.1, 0.95), "t2" -> Array(2.1))
actor ! testActor(data)
expectMsg(replyTestActor(expectedResult)

由于某种原因,断言是在地图物理地址上完成的,即

assertion failed: expected replyTestActor(Map(c1 -> [D@60b8a8f6, c2 -> [D@7b5ce015),2,2000), found replyTestActor(Map(c1 -> [D@e7bc1f9, c2 -> [D@5efbc9dc),2,2000)

我必须在调试模式中评论,当我在断点处输入“表达式评估”时,演员消息和“expectedValue”是相同的ץ

1 个答案:

答案 0 :(得分:1)

问题在于SortedMap中的值。

> Array(42) == Array(42)
res0: Boolean = false

Array不提供友好的平等实现。

编辑:加号,Array是一个可变结构,通常不建议在演员之间传递消息时使用它们。