Spock Grails 2.0 Forward不返回模型数据

时间:2012-07-18 16:17:01

标签: grails spock

我正在尝试使用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单元测试中获得返回参数copyIdpageCounter
我在Controller代码中打印了值(上述两个变量),并且它们中包含数据。我调查了forwardArgsmockResponse等。 请帮忙

1 个答案:

答案 0 :(得分:1)

forward方法实际上并不接受model参数。见the docs for forward

可以使用params,在这种情况下,这些值会附加到您现在正在测试的forwardedUrl的查询字符串中。

如果您想在操作之间传递更复杂的数据,您可能需要查看chain方法,该方法会在重定向之前将模型放入闪存范围。