Доступ к модели и просмотр информации в тесте интеграции контроллера Grails - PullRequest
2 голосов
/ 29 марта 2011

Можно ли каким-то образом узнать, какое представление и что было передано в качестве модели после выдачи команды рендеринга в контроллере в интеграционном тесте? Eg.:

render view: 'edit', model: [profileInstance: someProfile]

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

1 Ответ

4 голосов
/ 29 марта 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

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

...