Grails 2.0.0: статус HTTP 302

У меня есть контроллер, который разрешает только POST для определенных действий:

static allowedMethods = [save: "POST", update: "POST", delete: "POST"]

Тогда есть тест для него:

void testUpdateWithGet() {
    controller.update()
    assert response.status == HttpServletResponse.SC_METHOD_NOT_ALLOWED
} 

Это прекрасно работало с версией 2.0.0.RC1, но после обновления до финальной версии Grails 2.0.0 в ответе возвращается статус 302. Это почему?

С Уважением

Йонас


person Jonas    schedule 21.12.2011    source источник
comment
Если я явно задаю метод, я получаю тот же request.method = "GET". Некоторые подобные тесты даже возвращают 200, что означает, что вызов в порядке.   -  person Jonas    schedule 22.12.2011
comment
Стоит отметить, что действия save возвращают 200, а update и delete 302 для всех контроллеров.   -  person Jonas    schedule 22.12.2011
comment
Учитывая, что если я проверю эту проблему не из модульных тестов, а из командной строки через curl, и я не смогу воспроизвести ваши 302, я предполагаю, что что-то не так с тем, как обрабатывается прямой вызов метода. Я бы предложил удалить ваши критерии allowMethods и распечатать request.method в вашем контроллере, а затем запустить тест. Просто так, чтобы вы могли видеть, что по умолчанию.   -  person Jan Wikholm    schedule 22.12.2011
comment
@JanWikholm - метод по умолчанию всегда GET.   -  person Tomasz Kalkosiński    schedule 22.12.2011


Ответы (1)


Я могу подтвердить ваш тестовый пример. Это связано с тем, что начиная с версии 2.0.0.RC3 в Grails есть неустраненная ошибка, которая влияет и на финальную версию 2.0.0: http://jira.grails.org/browse/GRAILS-8426 — разрешенные методы не учитываются в модульных тестах. Вы можете перейти на 2.0.0.RC1 или дождаться исправления этой ошибки. Это влияет только на модульные тесты, но отлично работает в приложении.

person Tomasz Kalkosiński    schedule 22.12.2011
comment
Спасибо, я почему-то этого и ожидал. Некоторое время назад я обновился до RC3, увидел проблему и снова перешел на RC1. Но теперь, когда вышел финальный релиз, я больше не хочу понижать рейтинг. Итак, я с радостью жду, когда ошибка будет устранена. Я скорректировал свои модульные тесты с большим комментарием... - person Jonas; 23.12.2011