SEQ空测试与specs2(Seq empty test with specs2)

2019-09-22 15:58发布

我如何检查是否一个Seq[String]是空的或不斯卡拉使用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)

Answer 1:

我认为,类型不匹配错误是由代码另一位比你已经张贴造成的。

你的榜样应该只是一起工作:

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
  }
}


Answer 2:

尝试使用specs2匹配have size 。 由于大小不能为负,如果不是零,它必须大于零。 因此,我们可以使用:

ret must not have size (0)


文章来源: Seq empty test with specs2