在 Controller 中执行以下操作:
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
。虽然第一个 Action 有效,但第二个 Action 所需的代码更少,我不知道为什么会发生空指针异常。在开发中,两个 Action 的gsp呈现相同。 最佳答案
实际上有一个Grails bug,它与两个返回类型的处理方式不同:
因此,看起来像在返回 map 时,将其视为常规方法(并处理返回的值)可能比调用controller.modelAndView
更好。例如:
Map response = controller.listBlockedMembers()
assert response.blocked