ScalaTest断言因物理地址而不匹配

ScalaTest断言因物理地址而不匹配,scala,assert,scalatest,Scala,Assert,Scalatest,我正在运行ScalaTest,断言我的参与者返回了正确的数据类型 名为“testActor”的参与者将数据从SortedMap[Long,SortedMap[String,Double]]转换为SortedMap[String,Array[Double]] 目前的代码是: val data: SortedMap[Long, SortedMap[String, Double]] = SortedMap (1000L -> SortedMap("c1" -> 1., "c2" ->

我正在运行ScalaTest,断言我的参与者返回了正确的数据类型

名为“testActor”的参与者将数据从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)

我必须指出,在调试模式下,当我在断点上输入“表达式求值”时,actor消息和“expectedValue”是相同的ץ

问题在于
SortedMap
中的值

> Array(42) == Array(42)
res0: Boolean = false
数组不提供友好的equal实现


编辑:另外,
Array
是一种可变结构,通常不建议在参与者之间传递消息时使用它们。

谢谢。有没有办法添加一个相同的实现?您可以尝试使用
expectMsgPF[T](d:Duration)(pf:PartialFunction[Any,T]):T
并定义一个对消息进行深入探索的分部函数。然后,您可以使用
Array.deep
来真正测试数组的内容。请您详细说明如何编写部分函数,以便在地图中查看并使用Array,deep比较数组?