Тест Grails mockFor java.util.Calendar.getInstance () - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь смоделировать модульный тест Календаря на граиле 2.2.2, используя grails.test.mixin .mockFor, но у меня возникает следующая ошибка: На данный момент больше не ожидается никаких вызовов getInstance.Конец требований.Кто-нибудь знает, можно ли это сделать над Календарем?

Тестовый класс: @TestFor (FechaService) class FechaServiceTests {

void testGetMesesCrearMetrica() {
    given:
    def cal = Calendar.getInstance().set(Calendar.MONTH, 0)
    def mockCalendar = mockFor(Calendar)
    mockCalendar.demand.static.getInstance{-> cal}
    mockCalendar.createMock()
    when:
    def meses = service.getMesesCrearMetrica()
    ...
}

}

Метод обслуживания: defgetMesesCrearMetrica () {def meses = [:]

    for(def mes : Meses.values()){
        if(mes.value -1 == Calendar.getInstance().get(Calendar.MONTH)) break
        meses[mes.value] = mes.name()
    }
    return meses
}

1 Ответ

0 голосов
/ 25 мая 2018

Вы можете изменить сигнатуру тестируемого метода, чтобы он принимал Calendar в качестве аргумента.

В противном случае я бы также попытался использовать metaClass.

@ConfineMetaClassChanges(Calendar)
void testGetMesesCrearMetrica() {
    given:
    def cal = Calendar.getInstance()
    cal.set(Calendar.MONTH, 0)
    Calendar.metaClass.static.getInstance = { cal }

    when:
    def meses = service.getMesesCrearMetrica()
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...