访问grails控制器集成测试中的模型和视图信息

时间:2011-03-29 00:41:06

标签: grails integration-testing render

在集成测试中在控制器中发出渲染命令后,有什么方法可以获得哪些视图和传递的模型?例如:

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

我有机会检索模型和视图以执行某些断言吗?我知道如何在单元测试中做到这一点,但它在集成测试中也会很方便。

1 个答案:

答案 0 :(得分:4)

您可以从Controller更改render方法,以便能够获取传递给它的地图,以便能够获取模型和视图。为此,您可以在名为renderMap的测试方法中声明一个变量,然后更改render方法以将其设置为:

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

在某些时候,您可能希望恢复控制器的metaClass。