2

我正在将我的应用程序从 Grails 升级2.5.6到 Grails 4.0.3。现在我有很多单元测试失败了,因为我request.JSON在一个测试中多次调用控制器方法。这些单元测试在旧 Grails 中运行良好2.5.6

为了演示这个问题,我有一个使用以下方法的控制器:

class TestController {
    def testJson(){
        def json = request.JSON
        render(contentType:'application/json', text:json.toString(), encoding: "UTF-8")
    }
}

我有一个这样的单元测试:

class TestControllerSpec extends Specification implements ControllerUnitTest<TestController> {

    void "test json"(){
        when:
        request.json = [
                a:1, b:2, c:3
        ]
        controller.testJson()

        then:
        response.json.a == 1
        response.json.b == 2
        response.json.c == 3

        when:
        response.reset()
        request.json = [
                a:10, b:20, c:30
        ]
        controller.testJson()

        then:
        response.json.a == 10 // <-- test failed here
        response.json.b == 20
        response.json.c == 30
    }

}

测试将失败并出现以下错误

response.json.a == 10
|        |    | |
|        |    1 false
|        [a:1, b:2, c:3]

问题是:我怎样才能重置状态request?或者为什么我不能将新值设置为request.json

更新:请查看此演示项目:https ://github.com/jaguar1975cn/grails403test

4

0 回答 0