Pergunta

Isso foi tirado quase literalmente da IBM's Dominando Grails Series.

DateTaglib.groovy:

class DateTagLib {
  def thisYear = {
    out << Calendar.getInstance().get(Calendar.YEAR)
  }
}

DataTaglibtests.groovy:

class DateTagLibTests extends TagLibUnitTestCase {
    def dateTagLib

    protected void setUp() {
        super.setUp()

        dateTagLib = new DateTagLib()
    }

    void testThisYear() {
        String expected = Calendar.getInstance().get(Calendar.YEAR)
        assertEquals("years do NOT match", expected, dateTagLib.thisYear())
    }

    protected void tearDown() {
        super.tearDown()
    }
}

grails test-app DateTagLib resultado:

-------------------------------------------------------
Running 1 unit test...
Running test DateTagLibTests...
                    testThisYear...FAILED
Tests Completed in 359ms ...
-------------------------------------------------------
Tests passed: 0
Tests failed: 1
-------------------------------------------------------

Tentei combinar os tipos (int/long/string), mas ainda estou batendo a cabeça contra a parede.

Este teste também falha:

void testThisYear() {
    long expected = Calendar.getInstance().get(Calendar.YEAR)
    assertEquals("years do NOT match", expected, (long) dateTagLib.thisYear())
}
Foi útil?

Solução

Tente o seguinte em vez disso

class DateTagLibTests extends TagLibUnitTestCase {

    void testThisYear() {
        String expected = Calendar.getInstance().get(Calendar.YEAR)
        tagLib.thisYear()
        assertEquals("years do NOT match", expected, tagLib.out)
    }

}

Seu código original tem 2 problemas:

  • Você não deve instanciar DateTagLib explicitamente. Já está disponível através de uma propriedade da classe de teste nomeada tagLib
  • thisYear não retorna o valor do ano, ele escreve para out. Dentro de um teste, você pode acessar o conteúdo escrito à saída via tagLib.out

Outras dicas

out << Calendar.getInstance().get(Calendar.YEAR) coloca o resultado em out, se você quiser testar este uso def thisYear = { Calendar.getInstance().get(Calendar.YEAR) }

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