Использование Grails 2.1.0Проверка контроллера Grails, подтверждающая утверждение модели при рендеринге шаблона?
Кажется, что делает это от контроллера:
render(view: "someView", model: [modelEntry: "hello"])
позволяет мне сделать это в модульном тесте для этого контроллера:
controller.method()
assert model.modelEntry == "hello"
Однако, если Я меняю контроллер, чтобы сделать это:
render(template: "someTemplate", model: [modelEntry: "hello"])
Теперь модель экземпляр в тесте - пустой массив. Я довольно много разбираюсь в этом, и большинство решений, похоже, для Grails 1, часто с участием объекта modelAndView
(которого нет в моем тесте) или renderArgs
(то же).
Единственное решение, которое я нашел, чтобы вручную изменить точку зрения в тесте, как это:
views['_someTemplate.gsp'] = '${modelEntry}'
, а затем сделать утверждения о строке. Но мне не нравится это решение, потому что:
- требует тест знает имя файла шаблона
- затрудняет для записи тестовых моделей, которые не имеют хорошего ToString() методы
- затрудняет сделать несколько утверждений о связанных записях модели.
Есть ли способ более прямого доступа к элементам в модели из тестового примера, когда контроллер отображает шаблон?
'controller.modelAndView.model' не существует? –
@ SérgioMichels правильно, 'controller.modelAndView' равно null. Имейте в виду, что это использует идиоматический стиль Grails 2, где тест объявляется как '@TestFor (WhateverController)', и тест ничего не расширяет. Я не уверен, работает ли модельAndView для grails 1 или почему я всегда вижу это предложение, но в этом случае Grail 2 этого типа нет. – Rod