所以我曾经能够运行多个断言,但现在我不断收到警告“未使用的表达式没有副作用”。然而,每个断言本身都很好地通过了测试。我该如何解决这个问题? ` val 结果=boringService.transform(input)
val overview = result.openAccounts.head
overview.accountType shouldBe "CreditCard"
overview.totalBalance shouldBe SummaryMonetaryAmount(4000, 2, "GBP")
overview.totalLimit shouldBe SummaryMonetaryAmount(12000, 2, "GBP")
overview.totalUtilisation shouldBe Some(33)`
我不想返回整个响应,因为我想测试这些特定字段
这可能与编译器中用于检查未使用的纯表达式的新 linter 有关。
在实践中,这可以捕获很多错误,例如:
def foo(): Int =
computeValue() // Unused value, probably a mistake.
10
但是,与大多数 linter 一样,它无法真正了解所有内容的完整语义。在这种情况下,ScalaTest
assertions
看起来像纯值,但确实有副作用。因此,丢弃它们是有道理的。
如果您不想禁用整个 linter,最简单的修复方法就是将其配置为忽略这些:
// Disable Wnonunit-statement warnings related to ScalaTest Assertion.
Test / scalacOptions += "-Wconf:cat=other-pure-statement&msg=org.scalatest.Assertion:s",
将其添加到您的
build.sbt
的正确位置