2010-01-15 4 views
2

У меня есть тестовый тест ActionController, который отправляет запрос «post» тестируемому контроллеру с неправильными данными. Контроллер пытается создать новый объект и сохранить его. Модель имеет методы проверки, которые запускаются при сохранении, и они генерируют ошибку проверки, обнаруживая неверные данные, отправленные тестом.Проверка контроллеров Rails. Ошибки проверки не повышают ответ HTTP-ошибки.

Пока все хорошо. Теперь контроллер проверяет, что статус ответа HTTP является сбой, используя assert_response: failure. Тем не менее, тест не на этом этапе говорить:

Ожидаемый ответ быть <: отказ>, но < 200>

The @ obj.errors правильно заполняется с ошибкой проверки, но как-то ответа HTTP всегда 200.

Любые подсказки?

ответ

3

Что делает ваш код контроллера? Обычным способом обработки ошибок проверки в Rails является отправка ответа 200 OK (например, с помощью render :action => 'new'). Ответ содержит форму (заполненную представленными параметрами) вместе с сообщениями об ошибках проверки.

+0

Да, это действительно по дизайну. Контроллер ничего не делает, и ответ HTTP должен быть 200, так как сам запрос был прав, хотя и с недопустимыми данными. Спасибо, что подтвердили это. – bhavinb

Смежные вопросы