Функциональный тест Rails не ловит / не получает исключения - PullRequest
0 голосов
/ 06 октября 2010

При запуске одного из функциональных тестов моего приложения на днях я обнаружил ошибку в своем коде, которая вызывала RoutingError.Мой функциональный тест загружал страницу, и на этой странице он создавал ссылку на страницу, которая не имела допустимого маршрута к ней.Однако конкретная причина исключения не в этом - проблема была в том, что это исключение не было передано обратно в мой тест.Единственная причина, по которой я знаю, что произошло исключение, заключалась в том, что я заметил это в файле test.log.Короче говоря, тест пройден , но я думаю, что это считается ошибкой!

Это смутило меня.Я попытался поместить свой тестовый код в блок assert_nothing_raised, но он все еще прошел.

Копая дальше, я пришел к выводу, что любое исключение, сгенерированное моим приложением, было тихо зарегистрировано и не приводило к сбою тестов.Это преднамеренное поведение в Rails или кажется, что я что-то настроил неправильно?

РЕДАКТИРОВАТЬ: Я думаю, что проблема может быть в том, что Rails перехватывает и обрабатывает исключение (чтобы он мог представить знакомый стек- отслеживание страницы при отправке запроса из браузера).Я понимаю, почему это полезно в среде development, но не в среде test ...?

1 Ответ

0 голосов
/ 07 октября 2010

Вы должны явно проверять реакцию каждого действия в своих функциональных тестах, попробуйте сделать что-то вроде этого:

get: index assert_response: success

у вас всегда должна быть какая-то формаутверждение для ответа.Когда действие должно быть перенаправлено, вы используете assert_redicted_to

...