Frage

Ich habe in Java in der Vergangenheit entwickelt, und jetzt versuche ich Grails / Groovy mit diese leicht vom 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
( Hinweis: diese TagLibUnitTestCase ist für Grails 1.2.1 und nicht die Version in der Tutorial )

Aus irgendeinem Grund die oben Test nicht mit:

  

erwartet: <2010> aber war: <2010>

Ich habe versucht, den Test oben mit der folgenden alternativen Version des Tests zu ersetzen, und der Test bestanden wird gerade fein:

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

Diese beiden Versionen des Tests sind im Grunde die gleiche Sache richtig?

Es sei denn, es ist etwas Neues in Grails 1.2.1 oder Groovy, dass ich nicht zu verstehen. Sie sollten vom gleichen Typ sein, da die Werte sowohl der zurückgegebene Wert sind durch Calendar.getInstance (). Get (Calendar.YEAR)

War es hilfreich?

Lösung

Das Objekt von dateTagLib.thisYear zurückgegeben () muss nicht ein String sein.

Versuchen

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

In Ihrem Arbeitsbeispiel wird Groovy .thisYear () in einen String für Sie konvertieren.

Drucken Sie dateTagLib.thisYear (). Klasse sicher sein.

cheers

Lee

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