Frage

Dies wurde fast wörtlich aus IBMs genommen Mastering Grails Serie.

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

grails test-app DateTagLib Ausgabe:

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

Ich habe versucht, die Typen passend (int / long / String), aber ich bin hämmern noch meinen Kopf gegen die Wand.

Dieser Test auch nicht:

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

Lösung

Versuchen Sie, die folgenden statt

class DateTagLibTests extends TagLibUnitTestCase {

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

}

Ihr Original-Code hat zwei Probleme:

  • Sie sollten nicht instantiate DateTagLib explizit. Es ist bereits durch eine Eigenschaft der Testklasse mit dem Namen tagLib
  • thisYear kehrt nicht den Wert des Jahres, um es zu out schreibt. Innerhalb eines Tests können Sie den Inhalt mit dem Ausgang über tagLib.out geschrieben Zugriff

Andere Tipps

out << Calendar.getInstance().get(Calendar.YEAR) legt das Ergebnis in out, wenn Sie diese Anwendung testen wollen def thisYear = { Calendar.getInstance().get(Calendar.YEAR) }

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top