2013-03-12 1 views
2

Я использую Grails 2.2.0. Это мой метод, который будет испытываться:Тестирование модуля методом контроллера завершается неудачно, потому что вид равен нулю

def extendedSearchIndex() { 
    log.debug("ExtendedSearchIndex ... "); 
    def deviceClass = deviceService.getDeviceClass(request) 
    if (deviceClass == "FeaturePhone") { 
    render(view: '/featurephone/expanded_search') 
    } 
} 

Это мой метод испытания:

void testExtendedSearchIndex01() { 
    deviceServiceMock.demand.getDeviceClass(1..10) { def myRequest, boolean verbose -> 
     return "FeaturePhone" 
    } 
    controller.deviceService = deviceServiceMock.createMock() 
    controller.extendedSearchIndex() 

    assert view == "/featurephone/expanded_search" 
} 

Этот тест не потому, что вид является недействительным. Но почему это пусто? Не должно быть /featurephone/expanded_search? Я что-то упускаю?

Благодарим за помощь.

- Крис

ответ

2

Вы издевались сигнатуру метода getDeviceClass(), который нуждается в def и boolean, но контроллер использовать другой, который нуждается только def. Я думаю, что ваш макет должен быть:

deviceServiceMock.demand.getDeviceClass(1..10) { def myRequest -> 
    return "FeaturePhone" 
} 

Предложение заключается в использовании строки для deviceClass, так как вы знаете тип, возвращаемый getDeviceClass():

String deviceClass = deviceService.getDeviceClass(request) 
if(deviceClass == "FeaturePhone") 

И если вы используете IDE, например, STS, вы можете отладить ваш контроллер, чтобы проверить значение, возвращаемое службой.

+0

Это было полностью! Моя проблема заключалась в том, что метод getDeviceClass() перегружен. Я издевался над неправильной подписью. Большое спасибо! – Christian

+0

Я рад помочь! –

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

  • Нет связанных вопросов^_^