2010-03-30 6 views
1

Я развивал в Java в прошлом, и теперь я пытаюсь изучить Grails/Groovy, используя this slightly dated tutorial.Тесты модулей Grails: почему это утверждение терпит неудачу?

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
(Примечание:это TagLibUnitTestCase для Grails 1.2.1, а не версии, используемые в tutorial)

По какой-то причине вышеописанное испытание терпит неудачу с :

Ожидается: < 2010> но было: < 2010>

Я попытался заменить тест выше со следующей альтернативной версии теста, и тест проходит нормально:

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

Эти две версии теста, в основном то же самое вещь право?

Если в Grails 1.2.1 или Groovy нет ничего нового, что я не понимаю. Они должны быть того же типа, так как эти значения как значение, возвращаемое Calendar.getInstance(). Получить (Calendar.YEAR)

+0

Дубликат Мой плохой! – leeand00

+0

@Victor Да, меня очень интересует эта бета-версия! Но я боюсь, что я был закрыт! – leeand00

+1

Да, это только начало сегодня менее 12 часов. Вы пропустили поезд, но не волнуйтесь, он запустит открытую бета-версию через 7 дней :) – greatwolf

ответ

2

Возвращаемый объект из dateTagLib.thisYear() не должен быть строкой.

Попробуйте

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

В вашем рабочем примере Groovy является преобразование .thisYear() в строку для вас.

Распечатка dateTagLib.thisYear(). Класс, чтобы быть уверенным.

Приветствия

Lee

+0

Спасибо Ли (этот вопрос не является точным дубликатом ... но он близок, хотя ... :-D) – leeand00

Смежные вопросы