我正在运行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”是相同的ץ
答案 0 :(得分:1)
问题在于SortedMap
中的值。
> Array(42) == Array(42)
res0: Boolean = false
Array不提供友好的平等实现。
编辑:加号,Array
是一个可变结构,通常不建议在演员之间传递消息时使用它们。