我有一个与这个问题中描述的问题非常相似的问题。(主要区别在于我使用的是 Grails 2.1)。
基本上我想写一个单元测试,它像:
// set params so i can create an obj.
def results = controller.save()
// validate results or model/view
results = controller.edit(id, version)
但是,这不起作用,因为第一个方法操作(保存)已触发重定向,而第二个方法操作也会触发重定向,这会导致无法重定向异常。随着消息:
Cannot issue a redirect(..) here. A previous call to redirect(..) has already redirected the response.
建议的解决方案(在各个地方都可以找到)是:
redirectArgs.clear()
但是,这不起作用,因为从 Grails 2 开始,redirectArgs 不存在,只有
response.redirectUr
只能读取,不能写入。
我也已经尝试过这些东西(各种组合):
response.reset()
clearGrailsWebRequest()
bindGrailsWebRequest()
cleanupGrailsWeb()
controller.redirect([:])
controller.redirect(null)
controller = new OfferObjectController()
controller = mockController(OfferObjectController)
一切都没有运气。
我完全没有其他想法可以工作/帮助。任何建议表示赞赏!
==== 编辑 ====
我忘了澄清
response.reset()
有点工作,它让我调用另一个动作,但是它似乎撤消/回滚前一个动作所做的更改,这正是我想要避免的(如果我想要这样,我会将调用放入它自己的测试中[方法])。