Pruebas unitarias Grails: ¿Por qué fracasa esta declaración?
-
23-09-2019 - |
Pregunta
he desarrollado en Java en el pasado, y ahora estoy tratando de aprender Grails / Groovy usando esta ligeramente de fecha tutorial .
import grails.test.*
class DateTagLibTests extends TagLibUnitTestCase {
def dateTagLib
protected void setUp() {
super.setUp()
dateTagLib = new DateTagLib()
}
protected void tearDown() {
super.tearDown()
}
void testThisYear() {
String expected = Calendar.getInstance().get(Calendar.YEAR)
// NOTE: This statement fails
assertEquals("the years dont match and I dont know why.", expected, dateTagLib.thisYear())
}
}
DateTagLibTests.groovy
( Nota: este TagLibUnitTestCase es para Grails 1.2.1 y no la versión usada en la tutorial )
Por alguna razón la prueba anterior falla con:
espera: <2010>, pero era: <2010>
He intentado sustituir la prueba anterior con la siguiente versión alternativa de la prueba, y la prueba pasa muy bien:
void testThisYear() {
String expected = Calendar.getInstance().get(Calendar.YEAR)
String actual = dateTagLib.thisYear()
// NOTE: The following two assertions work:
assertEquals("the years don\'t match", expected, actual)
assertTrue("the years don\'t match", expected.equals(actual))
}
Estas dos versiones de la prueba son básicamente lo mismo ¿verdad?
A menos que haya algo nuevo en Grails 1.2.1 o maravilloso que estoy sin comprender. Deben ser del mismo tipo, porque los valores son a la vez el valor devuelto por Calendar.getInstance (). Get (Calendar.YEAR)
Solución
El objeto de regresar de dateTagLib.thisYear () no debe ser una cadena.
Trate
assertEquals("the years dont match and I dont know why.", expected, dateTagLib.thisYear().toString())
En el ejemplo de trabajo, Groovy es la conversión de .thisYear () para una cadena para usted.
Imprima dateTagLib.thisYear (). Clase para estar seguro.
aplausos
Lee