Как вызвать call request. JSON несколько раз в модульных тестах Grails? - PullRequest
1 голос
/ 07 мая 2020

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

...