2010-03-30 8 views
1

J'ai développé en Java dans le passé, et maintenant j'essaie d'apprendre Grails/Groovy en utilisant this slightly dated tutorial.Grails Unit Tests: Pourquoi cette instruction échoue?

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
(Note:cette TagLibUnitTestCase est pour Grails 1.2.1 et non la version utilisée dans le tutorial)

Pour une raison quelconque le test ci-dessus échoue avec :

attendu: < 2010> mais était: < 2010>

J'ai essayé de remplacer le test ci-dessus avec la version alternative suivante du test et le test passe très bien:

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

Ces deux versions du test sont fondamentalement les mêmes chose à droite? Sauf s'il y a quelque chose de nouveau dans Grails 1.2.1 ou Groovy que je ne comprends pas. Ils devraient être du même type, car les valeurs sont à la fois la valeur retournée par Calendar.getInstance(). Get (Calendar.YEAR)

+0

Dupliquer My bad! – leeand00

+0

@Victor Oui, je suis très intéressé par cette bêta! Mais j'ai peur d'avoir été exclu! – leeand00

+1

ouais, il a juste commencé aujourd'hui moins de 12 heures. Vous avez un peu manqué le train mais ne vous inquiétez pas, ça va aller en bêta ouverte dans 7 jours :) – greatwolf

Répondre

2

L'objet retourné par dateTagLib.thisYear() ne doit pas être une chaîne.

Essayez

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

Dans votre exemple de travail, Groovy convertit .thisYear() à une chaîne pour vous.

Imprimez la dateTagLib.thisYear(). Class pour être sûr.

acclamations

Lee

+0

Merci Lee (Cette question n'est pas une copie exacte ... mais c'est proche si ... :-D) – leeand00

Questions connexes