Grails получает вид контроллера - PullRequest
1 голос
/ 22 марта 2011

Я пытаюсь создать интегральный тест для контроллера, и мне нужно получить имя представления проверяемого контроллера.

Я пытаюсь сделать это следующим образом:

controller?.modelAndView?.getViewName()

Но объект modelAndView является нулевым.Объект контроллера не является нулевым и проходит другие тесты.

Есть идеи, почему я получаю нулевой modelAndView?из того, что я искал, это способ получить имя представления контроллера.

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 24 марта 2011

Тестовый пример работал на более старых версиях Grails, но начиная с версии 1.3.5 он не работал, мне пришлось добавить строку, чтобы добавить record.id к параметрам следующим образом:

    void testUpdateSaveError(){

    recordWrongParams.each{key, value->
        controller.params.put(key,value)
    }
    controller.params.put("id", record.id)      
    controller.update()         

    assertEquals controllerPath + "/edit", controller?.modelAndView?.getViewName()      
}

После этого работает

0 голосов
/ 22 марта 2011

У меня раньше была похожая проблема, когда мне нужно было получить модель в интеграционном тесте после выполнения метода действия контроллера, поэтому я изменил метод рендеринга из контроллера, чтобы получить карту, которая передается ему, чтобы иметь возможность получить модель. Таким образом, у меня была переменная в методе теста с именем renderMap, а затем я сделал

Map renderMap

registerMetaClass(MyController.class)
MyController.metaClass.render = {Map m ->
  renderMap = m
}
...
// Instantiate controller
// Call controller action

Тогда я смог получить доступ к некоторым объектам, которые я установил в модели следующим образом:

def someObject = renderMap.model.someObject

Итак, с этим вы сможете сделать:

String view = renderMap.view

В какой-то момент вы можете захотеть восстановить метакласс вашего контроллера, как он был.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...