我正在尝试为 Controller 创建一个集成测试用例,我需要获取被测试的 Controller 的 View 名称。
我正在尝试这样做:
controller?.modelAndView?.getViewName()
但是modelAndView对象为null。 Controller 对象不为null,并通过其他测试。
我为什么要获得modelAndView null的任何想法吗?从我搜索的内容中,这就是获取 Controller View 名称的方法。
谢谢你的帮助。
最佳答案
在执行 Controller Action 方法后需要在集成测试中获取模型之前,我遇到了类似的问题,所以我所做的是我将 Controller 的render方法更改为能够获取传递到的映射。为了能够得到模型。所以我在测试方法中有一个名为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
在某些时候,您可能想要还原 Controller 的metaClass。
关于grails - Grails获取 Controller View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5395552/