scala - Scalatest 是否具有深度或递归“应该包含 theSameElementsAs”?
问题描述
虽然 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
Array(
A(
id = "rst",
bs = List(
B(id = "xyz"),
B(id = "uvw"))),
A(
id = "abc",
bs = List(
B(id = "def"))))
断言失败,因为xyz
并且uvw
在其A.bs
领域内的顺序不同,但根据我们的规范,这仍然是有效的行为。我如何让断言在这里通过?
解决方案
推荐阅读
- javascript - 删除为空或 null 的项目 - JS - MYSQL - PHP
- mongodb - Mongo基于多个条件批量获取记录
- javascript - html标签对齐问题
- c - if 语句中可以使用赋值运算符吗?好像语句使用布尔表达式
- javascript - 回复消息时无法在消息中添加图像
- matplotlib - FacetGrid 的 Matplotlib 轴
- android - android动态资产交付
- filter - 自定义 Servlet 过滤器未应用于所有资源
- ios - iOS 图表 v3.5 chartViewDidEndPanning 没有被调用
- r - 在R中使用circlize的大小间隙