问题
How can I check if a Seq[String]
is empty or not using specs2 in Scala ? I am using seq must be empty
or seq.length must be greaterThan(0)
but I end up always with type mismatch errors.
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)
回答1:
I think the type mismatch error is caused by another bit of code than that which you've posted.
Your example should just work with:
ret must not be empty
I've tried and confirmed to be working correctly:
"Seq beEmpty test" should {
"just work" in {
Seq("foo") must not be empty
}
}
You could run into trouble if you use multiple assertions per test, for example the following doesn't compile:
"Seq beEmpty test" should {
"just work" in {
List() must be empty
Seq("foo") must not be empty
}
}
Which is unexpected, but easily fixed by helping the compiler:
"Seq beEmpty test" should {
"just work" in {
List() must beEmpty
Seq("foo") must not beEmpty
}
}
回答2:
Try using the specs2 matcher have size
. Since the size can't be negative, if it's not zero, it must be greater than zero. Therefore, we could use:
ret must not have size (0)
来源:https://stackoverflow.com/questions/12511310/seq-empty-test-with-specs2