Обычно контроллеры взаимодействуют только со службами. Большинство взаимодействий между контроллером и службой являются распределением данных и / или состояний. (И обработка исключений.) Насмешка / заглушка (зависание?) сервисный уровень позволяет нам гарантировать, что контроллер обрабатывает все, что может произойти между ним и его сервисами.
«Завершено и гарантировано» зависит от вас. Например, служба, которая взаимодействует с базой данных User
, вероятно, будет делать только несколько вещей: извлекать пользователя, извлекать список пользователей, обновлять пользователя или генерировать исключение для приложения или инфраструктуры. С точки зрения контроллера , это те вещи, которые должны быть проверены - это не так уж много, поэтому «полнота» довольно проста.
Ничто из этого не проверяет службы или DAO. Службы, например, могут быть протестированы с использованием «зависания» DAO. DAO могут быть протестированы с базой данных в памяти (хотя, если честно, я не всегда тестирую DAO, если они не имеют нетривиального, сгенерированного разработчиком SQL).
Ничто из этого не является заменой интеграционного тестирования, которое может проверять маршрутизацию, обработку ошибок и исключительных условий, форматирование данных и контент и т. Д.