grails - Grails获取 Controller View

标签 grails integration-testing

我正在尝试为 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/

相关文章:

node.js - CLI 的 commander.js 集成测试

java - Java 中的功能测试

javascript - Jasmine 链测试

grails - 将文件的内容显示到grails页面?

grails - 在这种情况下,findAllBy *如何工作?

sql - 来自 grails 项目的 hibernate AssertionFailure

grails - Grails WAR文件是否需要grails-app views文件夹?

scala - playframework2 和 Scala - 如何从 IDEA 启动测试?

spring-boot - 在Spring Boot中使用不同的弹性指数进行测试

jquery - Grails不会将jquery库放入HTML