Доброго времени суток! Никогда не приходилось покрывать тестами. В настоящее время разрабатываю API Схема, примерно, такая. Контроллер - передает в сервис реквест и отдает клиенту респонс Сервис - обрабатывает реквест, создает объекты сущностей, вызывает БД через репозиторий, или сервис другого приложения через вебссо, возвращает респонс в контроллер Сущности - объекты для респонсов. В основном создание объектов, иногда статика. Репозиторий - справочники и БД Кое-где используются фабрики. Вот такая приближенная схема. Вопрос, что именно здесь критично было бы покрыть тестами? С уважением.
Так как спецификация на API статична и не будет меняться, то покрывать нужно по идее сервис, который и делает все манипуляции после получения ответа.
В первую очередь надо определиться с видом тестов - модульные или функциональные. Если модульные, то, как тут уже правильно сказали, тестируют сервисы, не трогая саму БД - только логика. Если нужны функциональные, то данные шлют на нужный контроллер уже поднятого приложения и смотрят что там пришло в ответе, т.е. проходят полный цикл работы с БД и сервисами.
Часто вся логика заключается в том, чтобы делать более или менее хитрые запросы к БД. И мокать нет смысла - надо именно и протестировать, что запрос правильно вернул. Тогда приходится нагружать логику тестов