Scalatest的actual should contain theSameElementsAs expected
以与顺序无关的方式比较序列actual
和expected
,而以顺序感知的方式比较作为每个比较元素成员的序列。 theSameElementsAs
是否有一种变体,可以在元素内的序列上递归调用自己?
例如,假设我们有以下类:
case class A(
id: String,
bs: Seq[B]
)
case class B(
id: String
)
我们还创建了一个测试来验证这些类的业务逻辑:
val expectedOutput = Array(
A(
id = "abc",
bs = Array(
B(id = "def"))),
A(
id = "rst",
bs = Array(
B(id = "uvw"),
B(id = "xyz"))))
val actualOutput = myBusinessLogic(...)
actualOuptut should contain theSameElementsAs expectedOutput
由于myBusinessLogic
恰好是一个Spark应用程序,它以不确定的顺序返回A
的实例和B
包含的实例,因此actualOutput
看起来像这样:< / p>
Array(
A(
id = "rst",
bs = List(
B(id = "xyz"),
B(id = "uvw"))),
A(
id = "abc",
bs = List(
B(id = "def"))))
由于xyz
和uvw
在其A.bs
字段中的顺序不同,因此断言失败,但是根据我们的规范,这仍然是有效的行为。我如何使断言在这里通过?