Question

Ceci a été pris presque mot pour mot de Mastering Grails IBM série.

DateTagLib.groovy:

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

DateTagLibTests.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()
    }
}

sortie grails test-app DateTagLib:

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

J'ai essayé les types correspondant (int / long / cordes), mais je suis encore frapper ma tête contre le mur.

Ce test échoue aussi:

void testThisYear() {
    long expected = Calendar.getInstance().get(Calendar.YEAR)
    assertEquals("years do NOT match", expected, (long) dateTagLib.thisYear())
}
Était-ce utile?

La solution

Essayez les options suivantes au lieu

class DateTagLibTests extends TagLibUnitTestCase {

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

}

Votre code d'origine a 2 problèmes:

  • Vous ne devriez pas instancier DateTagLib explicitement. Il est déjà disponible dans une propriété de la classe de test tagLib nommé
  • thisYear ne retourne pas la valeur de l'année, il écrit à out. Au sein d'un test, vous pouvez accéder au contenu écrit à la sortie via tagLib.out

Autres conseils

out << Calendar.getInstance().get(Calendar.YEAR) met le résultat dans out, si vous voulez tester cette utilisation def thisYear = { Calendar.getInstance().get(Calendar.YEAR) }

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top