在集成测试中在控制器中发出渲染命令后,有什么方法可以获得哪些视图和传递的模型?例如:
render view: 'edit', model: [profileInstance: someProfile]
我有机会检索模型和视图以执行某些断言吗?我知道如何在单元测试中做到这一点,但它在集成测试中也会很方便。
答案 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。