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)

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top