Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Seq empty test with specs2

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)
like image 233
mete Avatar asked Sep 20 '12 11:09

mete


1 Answers

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
  }
}
like image 154
iwein Avatar answered Sep 21 '22 11:09

iwein