【发布时间】:2021-06-16 05:23:12
【问题描述】:
我刚刚开始使用 WordSpec,但遇到了一个无法解决的问题。
我想在一个单元测试中断言两个不同的值。假设我有val result1 和val result2,我需要第一个取特定值,第二个取另一个特定值。
如果可以对断言进行连接/减少/折叠,这将非常容易,但我认为我不能。也许是这样的:
result1 should be (1) ++ result2 should be (2)
结果将是一个新的断言,只有当两个断言都为真时才为真。
如果我把它们写成如下,它只会取最后一个值。
result1 should be (1)
result2 should be (2)
有人知道解决这个问题的方法吗?
【问题讨论】:
-
如果你一个接一个地添加一个断言,它会同时检查它们,所以我不太明白你的问题。你可以试试
(result1, result2) shouldBe (1,2)? -
AFAIK scalatest 执行所有断言。因此,您可以按照向他们展示的方式编写它。 ScalaTest 是一个非常复杂的 DSL,它不像大多数 scala 函数那样工作,只是返回 las 值。
-
@LuisMiguelMejíaSuárez 你如何获得最大规模的执行所有断言?我的 scalatests 在遇到第一个失败的断言后停止。我能找到运行所有断言的唯一方法是将断言包装在
Checkpoint中。你做了什么? -
@skrueger 这就是重点,它将开始运行所有这些并返回第一个失败。