Pergunta

Eu desenvolvi em Java no passado, e agora estou tentando aprender graals/groovy usando Este tutorial ligeiramente datado.

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())

    }
}

DataTaglibtests.groovy
(Observação: Este taglibunittestcase é para graals 1.2.1 e não a versão usada no tutorial)

Por alguma razão, o teste acima falha com:

Esperado: <2010> mas foi: <2010>

Tentei substituir o teste acima pela seguinte versão alternativa do teste, e o teste passa bem:

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))
}

Essas duas versões do teste são basicamente a mesma coisa, certo?

A menos que haja algo novo no Grails 1.2.1 ou groovy que eu não estou entendendo. Eles devem ser do mesmo tipo porque os valores são o valor retornado por Calendar.getInstance (). Get (calendário.year)

Foi útil?

Solução

O objeto retornado de DateTaglib.Thisyear () não deve ser uma string.

Tentar

  assertEquals("the years dont match and I dont know why.", expected, dateTagLib.thisYear().toString())

No seu exemplo de trabalho, o Groovy está convertendo .ThisYear () em uma string para você.

Imprima DataTaglib.Thisyear (). Classe com certeza.

Felicidades

Lee

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top