2012-09-20 10 views
6

¿Cómo puedo verificar si un Seq[String] está vacío o no está utilizando specs2 en Scala? Estoy usando seq must be empty o seq.length must be greaterThan(0), pero siempre termino con errores de tipo no coincidentes.Seq test vacío con specs2

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

Puede ser más afortunado si publica el código exacto y el mensaje de error correspondiente dado por el compilador. –

+0

Sí, por favor agregue un ejemplo más completo. Creo que su caso podría ser una instancia de un problema de inferencia de tipo "clásico" en el que tiene expresiones de coincidencia consecutivas separadas por líneas nuevas, como "ret.length debe ser mayor que (0) \ n ret.lenght must beLowerThan (10)" (si ese es el caso, editaré este comentario como una respuesta correcta) – Eric

Respuesta

1

Pruebe usar el matcher specs2 have size. Como el tamaño no puede ser negativo, si no es cero, debe ser mayor que cero. Por lo tanto, podríamos usar:

ret must not have size (0) 
5

Creo que el error de discrepancia de tipo es causado por otro bit de código que el que ha publicado.

Su ejemplo debería trabajar sólo con:

ret must not be empty 

He probado y confirmado estar trabajando correctamente:

"Seq beEmpty test" should { 
    "just work" in { 
     Seq("foo") must not be empty 
    } 
    } 

Usted podría tener problemas si utiliza múltiples afirmaciones por prueba, para ejemplo lo siguiente no se compila:

"Seq beEmpty test" should { 
    "just work" in { 
    List() must be empty 
    Seq("foo") must not be empty 
    } 
} 

que es inesperado, pero se soluciona fácilmente por ayuda al compilador:

"Seq beEmpty test" should { 
    "just work" in { 
    List() must beEmpty 
    Seq("foo") must not beEmpty 
    } 
} 
+0

¿Alguna razón para no usar 'beEmpty' de forma predeterminada? – OrangeDog

+0

@OrangeDog solo la elegancia de 'estar vacío' sobre 'beEmpty' puede ser un argumento. Ellos son semánticamente lo mismo. – iwein

Cuestiones relacionadas