1

我正在尝试使用 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
forwardArgsmockResponse

4

1 回答 1

1

forward方法实际上不接受model参数。请参阅文档forward

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

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

于 2012-09-03T17:06:36.390 回答