我正在尝试使用Spock插件测试Grails 2.0.4控制器
--------------------控制器-------------------
def addComment= {
def pageCounter=0
def result=reviewService.addComment(params.copyId,params.comment)
forward(action: "showPage", model: [copyId: result.copy.id,pageCounter:pageCounter])
}
==================控制器测试=========================== =
@TestFor(ReviewController)
class ReviewControllerSpec extends ControllerSpec
{
def "test"() {
setup:
-------------
when:
-------------
def returnMap=controller.addComment()
then:
mockResponse.forwardedUrl=='/grails/review/showPage.dispatch'
}
测试通过,但我无法获得控制器转发中定义的返回参数
forward(action: "showPage", model: [copyId: result.copy.id,pageCounter:pageCounter])
能否请你帮助我,让我知道如何在我的Spock单元测试中获得返回参数copyId
和pageCounter
。
我在Controller代码中打印了值(上述两个变量),并且它们中包含数据。我调查了forwardArgs
,mockResponse
等。
请帮忙
答案 0 :(得分:1)
forward
方法实际上并不接受model
参数。见the docs for forward
你可以使用params
,在这种情况下,这些值会附加到您现在正在测试的forwardedUrl
的查询字符串中。
如果您想在操作之间传递更复杂的数据,您可能需要查看chain
方法,该方法会在重定向之前将模型放入闪存范围。