2009-11-22 3 views
0

Я знаю, что Microsoft и MvcContrib сделали большие попытки разрешить разработчикам модульные тестовые контроллеры. Но в последнее время мне было интересно, нужно ли нам останавливать контроллеры модульных тестов и оставлять их для тестирования интеграции. У меня есть две причины для этого: Имеет ли смысл модульные контрольные контроллеры

  • Хороший контроллер не должен иметь в себе никакой логики или очень простой минимальной логики. Конечно, не бизнес-логика. Он должен быть небольшим и компактным и в зависимости от сервисов приложений делать то, что ему нужно сделать. Если эти службы хорошо протестированы, что я оставил для проверки в своем контроллере?
  • Контроллер в основном способ взаимодействия пользователей с вашим приложением. Это, как и пользовательский интерфейс, сильно подвержено изменениям. Например, я могу в один прекрасный день решить, что конкретное действие принадлежит другому контроллеру. Разумеется, если мы примем парадигму «бесконтрольного действия», этот момент, вероятно, не столь силен.
  • Я от основания здесь? Глядя на код других людей, я вижу людей в блочных контролерах.

    ответ

    1

    Отъезд this post для получения дополнительной информации.

    Короче говоря, тестирование контроллеров отлично проверяет, работает ли процесс (process), но они не имеют большого значения с точки зрения отладки, о которой я думаю.

    Я предпочитаю модульное тестирование своих (единиц), так что я знаю, что получаю ожидаемые результаты от каждого.

    Затем я буду тестировать устройства последовательно и, наконец, контроллер, но только для полноты.

    Получение пробных тестов, написанных на ваших устройствах, позволяет вам гораздо лучше отлаживать информацию, чем сообщение высокого уровня, например, вашего контроллера.

    +0

    Имеет ли смысл тестировать контроллер дважды, один раз в качестве SUT (только для того, чтобы убедиться, что вы передаете правильные данные, скажем), а другой как тест интеграции или функциональный тест? – blockhead

    +0

    Да, я думаю, что так и есть. В модульных тестах будут проверяться индивидуальные функциональные возможности, а также будут предоставлены средства для проверки, если устройство было сломано при изменении другого кода. Затем тест интеграции проверяет сквозной процесс. Ультимативно, что будет пользовательский эксперимент. Не все контроллеры должны быть протестированы таким образом, но сложные, которые могут включать многие PartialView, могут нуждаться в собственных тестах. Речь идет о детализации тестов, которые вы хотите написать, и о том, насколько вам комфортно с вашим кодом контроллера. – griegs

    2

    Я не всегда модульное тестирование простейших MVC контроллеров либо, но я нашел пару случаев, когда тесты полезны (по крайней мере в Java Spring MVC):

    1. Когда я создаю контроллер который модифицирует что-то в сеансе пользователя (например, добавляет атрибут сеанса, который используется на всем сайте). Он просто проверяет, что соответствующие данные добавляются в сеанс.
    2. Когда контроллер должен выполнить проверку подлинности/авторизации, чтобы решить, какой вид будет отображаться. Я добавляю 2 тестовых примера: 1, когда пользовательский сеанс имеет надлежащие учетные данные (утверждают, что они перенаправлены на нужный вид), и 1, где нет (утверждают, что они перенаправлены в окно входа в систему).
    Смежные вопросы