Я обновляю свое приложение с 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