Я обновил проект Grails с 2.5 до 3.3.9. В существующей версии есть тестовый пример интеграции для контроллера, в котором утверждается поведение шаблона рендеринга контроллера
ex:
class UserController {
def list = {
render(template: 'list', model: [userInstanceList:User.list(params)])
}
}
И интеграционные тесты с использованием grails 2.x
class UserControllerSpec extends IntegrationSpec{
UserController controller
Map renderedMap
public void setup() {
controller = new UserController()
UserController.metaClass.render = { Map map ->
renderedMap = map
}
}
public void cleanup() {
}
void "test user list"(){
when:
controller.list()
then:
renderedMap.template.equals('list')
renderedMap.model.userInstanceList.size() > 0
}
}
Как видно из примера, привязка metaClass.render поможет нам разобраться с шаблоном assert
Но в Grails 3 многие вещи меняютсятак что теперь я обновил контрольные примеры, например,
@Integration(applicationClass = Application.class)
@Rollback
class UserControllerSpec extends Specification{
@Autowired
UserController controller
Map renderedMap
//Mock web request code or other logic
public void setup() {
UserController.metaClass.render = { Map map ->
renderedMap = map
}
}
public void cleanup() {
}
void "test user list"(){
when:
controller.list()
then:
renderedMap.template.equals('list')
renderedMap.model.userInstanceList.size() > 0
}
}
Но здесь я получаю нулевое значение в renderderedMap.
Есть ли здесь обходной путь?Также есть ли способ получить доступ к флэш-сообщения в тесте?
Спасибо