gpt4 book ai didi

grails - controller.modelAndView 在集成测试中为空

转载 作者:行者123 更新时间:2023-11-28 20:01:13 27 4
gpt4 key购买 nike

在 Controller 中给出这个 Action :

def listBlockedMembers() {
def blocked = UserBlock.findAllByUser(springSecurityService.currentUser)

render(view:'listBlockedMembers', model:[blocked:blocked])
}

在我的集成测试中,模型和 View 工作正常:

def blocked = controller.modelAndView.model['blocked']
assertEquals 2, blocked.size()

但是如果我从这样的 Action 中传递模型:

def listBlockedMembers() {
def blocked = UserBlock.findAllByUser(springSecurityService.currentUser)
[blocked:blocked]
}

我在访问 controller.modelAndView 时遇到空指针异常(modelAndView 属性本身的空指针)

我的集成测试扩展了 GroovyTestCase。虽然第一个操作有效,但第二个操作代码更少,我想知道为什么会出现空指针异常。在开发中,gsp 对这两个操作呈现相同的效果。

最佳答案

实际上有一个 Grails bug为此,它与以不同方式处理的两种返回类型有关:

There are 2 scenarios being discussed here. One is a scenario where a method in a controller returns a Map and one is a scenario where the method in a controller does not return a Map. For the case where the method does not return a Map, for the sake of this discussion we are talking about the method having invoked the render method.

所以看起来在返回 map 时,将其视为常规方法(并处理返回值)可能比调用 controller.modelAndView 更好。例如:

Map response = controller.listBlockedMembers()
assert response.blocked

关于grails - controller.modelAndView 在集成测试中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21745239/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com