Модульные тесты Grails:Почему это утверждение терпит неудачу?

StackOverflow https://stackoverflow.com/questions/2542470

  •  23-09-2019
  •  | 
  •  

Вопрос

Раньше я занимался разработкой на Java, а теперь пытаюсь изучить Grails/Groovy, используя это немного устаревшее руководство.

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, а не для версии, используемой в руководство)

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

ожидалось:<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().get(Calendar.YEAR)

Это было полезно?

Решение

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

Пытаться

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

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

Для уверенности распечатайте dateTagLib.thisYear().class.

ваше здоровье

Ли

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top