У меня есть тест IntegrationSpec
в Grails 2.3.6, который создает экземпляр любого контроллера, добавляет данные в тело (через controller.request.JSON
), а затем проверяет правильность установки.Grails 2.3.6 IntegrationSpec Spock test не может изменить controller.request.JSON при использовании @Stepwise
Проблема заключается в том, что когда я добавляю аннотацию @Stepwise
, она, кажется, блокирует объект request
на объекте controller
. В отладчике я вижу, что это один и тот же объект (на основе хэш-кода), и, как вы можете видеть из-за отказа теста ниже, во второй раз, когда тест выполняется со значением из блока where:
, он терпит неудачу, поскольку первое значение из блок where:
все еще присутствует.
@Stepwise
class TestSpec extends IntegrationSpec {
@Unroll
void "changing controller request"() {
setup:
SomeController controller = new SomeController()
when:
controller.request.JSON = json
then:
controller.request.JSON == json
where:
json << [
[one: "1"],
[two: "2"]
]
}
}
Это сообщение об ошибке.
controller.request.JSON == json
| | | | |
| | | | [two:2]
| | | false
| | [one:1]
| org.code[email protected]55906c66
[email protected]
Это не сработает, если я удалю @Stepwise
.
Есть ли способ принудительно воссоздать объект request
или переопределить значение, установленное предыдущим тестом?
Я считаю, что controller.response.reset() в очистке: в методе функции также будет разрешено это. – dsimer