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