我正在将我的应用程序从 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