¿Existe alguna manera de mostrar mejor el mensaje de error? Por ejemplo, debajo del código
it should "check that items satisfy predicate" in {
List(1,2,3,4,5,6).forall(x => x < 5) should equal (true)
}
solo me da el siguiente error sin ninguna descripción:
"falso no es igual a verdadero"
El predicado no sólo puede ser la expresión mínima, sino cualquier otra función. Al menos encontré https://www.scalatest.org/user_guide/using_matchers#inspectorShorthands.
------------------------------------
no sólo puede ser la expresión mínima, sino cualquier otra función
Usando el inspector try
forAll (xs) { x => assert(pred(x)) }
donde pred: T => Booleano, que genera un mensaje de error informativo con un índice y un predicado fallidos, algo así como
- should check that items satisfy predicate *** FAILED ***
forAll failed, because:
at index 4, pred(x) was false (HelloSpec.scala:41)
in List(1, 2, 3, 4, 5, 6) (HelloSpec.scala:41)
------------------------------------
List(1,2,3,4,5,6).foreach { _ should be < 5 }
4
1
No lo probé, pero ¿estás seguro de que se analiza? De alguna manera tengo la sensación de que debería ser < 5, como en este ejemplo sobre beWithinTolerance. valor(_) método(debería) valor(ser) método(<) valor(5); de lo contrario, las invocaciones de métodos y los valores no se alternan.
-Andréi Tyukin
28/03/2021 a las 13:53
1
@AndreyTyukin sí, tienes razón... Nunca sé de qué manera se compilará en cada caso particular, solo tengo que probar uno y ver :)
-Dima
28/03/2021 a las 13:59
He actualizado el comentariot: En realidad, es bastante fácil de detectar, porque todos esos Scala-edsl de los primeros días siempre tienen la estructura de expresión Nombre del método expresión Nombre del método expresión, etc. No "recordaba" cualquier cosa sobre debería ser o debería ser, acabo de comprobar si se alterna o no.
-Andréi Tyukin
28/03/2021 a las 14:01
Sí... todavía tengo que recordar que debería ser un método, y ser s no... mientras que deberíaBe todavía lo es :D
-Dima
28/03/2021 a las 14:11
------------------------------------
Puedes cambiar la pregunta desde
"comprobar que los elementos cumplan el predicado"
a
"comprueba que todos los elementos de la lista sean menores de 5"
y entonces la respuesta es más significativa.
Si quieres una respuesta más significativa, puedes llamar a fallar, como
fail("I've got a bad feeling about this.")
También puedes utilizar aserciones de muchas maneras; lee esto para obtener más información. Ejemplo:
assume(database.isAvailable, "The database was down again")