Scalatest是否具有深层或递归的“应包含theSameElementsAs”?

时间:2019-01-29 22:10:51

标签: scala scalatest

Scalatest的actual should contain theSameElementsAs expected以与顺序无关的方式比较序列actualexpected,而以顺序感知的方式比较作为每个比较元素成员的序列。 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"))))

由于xyzuvw在其A.bs字段中的顺序不同,因此断言失败,但是根据我们的规范,这仍然是有效的行为。我如何使断言在这里通过?

0 个答案:

没有答案