unit-testing - 使用specs2进行序列空测试

标签 unit-testing scala specs specs2

我如何检查 Seq[String]在 Scala 中使用 specs2 是否为空?我正在使用 seq must be emptyseq.length must be greaterThan(0)但我最终总是遇到类型不匹配错误。

ret is Seq[String]

ret.length must be greaterThan(0)

[error] ApiTest.scala:99: type mismatch;
[error]  found   : Int
[error]  required: org.specs2.matcher.Matcher[String]
[error]         ret.length must be greaterThan(0)

最佳答案

我认为类型不匹配错误是由不同于您发布的代码的另一位代码引起的。

你的例子应该只适用于:

ret must not be empty

我已经尝试并确认可以正常工作:
 "Seq beEmpty test" should {
    "just work" in {
      Seq("foo") must not be empty
    }
  }

如果您在每个测试中使用多个断言,您可能会遇到问题,例如以下内容无法编译:
"Seq beEmpty test" should {
  "just work" in {
    List() must be empty
    Seq("foo") must not be empty
  }
}

这是出乎意料的,但可以通过帮助编译器轻松解决:
"Seq beEmpty test" should {
  "just work" in {
    List() must beEmpty
    Seq("foo") must not beEmpty
  }
}

关于unit-testing - 使用specs2进行序列空测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12511310/

相关文章:

scala - Sbt 打包命令不复制资源

scala - Specs 隐式转换与 Scala Predef 冲突

asp.net - 为 asp.net web 应用程序编写单元测试

unit-testing - 单元测试未出现

scala - Scala 案例类可以排除 setter 吗?

scala - 使用 scalacheck 生成任意(合法)Unicode 字符?

rust - 如何获得关联实体的变换?

javascript - 是否可以创建一个带有一些指定节点的 HTMLSlotElement 的新实例?

javascript - 在 Jest 中重置 Node 模块

java - 同时运行同一功能的多个版本