如何在Scala中使用specs2检查Seq[String]
是否为空?我使用的是seq must be empty
或seq.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)
答案 0 :(得分:5)
我认为类型不匹配错误是由另一部分代码引起的,而不是您发布的代码。
您的示例应该与:
一起使用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
}
}
答案 1 :(得分:1)
尝试使用specs2匹配器have size
。由于大小不能为负数,如果不为零,则必须大于零。因此,我们可以使用:
ret must not have size (0)