можешь развить мысль?
могу. Надо разделять IO и логику типа всяких валидаций, вычислений, построений сущностей и тд.
Это позволяет тестировать проще и эффективней. О всяком раке вроде Moq можно забыть, и юнит тесты имеют вменяемый размер кода.
ИО тестировать юнитами бесполезно абсолютно, для этого все равно надо писать е2е тесты. Соответственно, сервисы будут чем-то вроде локального композишн рута, а логика распихана во всякие EmployeeValidator, SalaryCalculator, которые сделаны статическими классами, чьи методы — чистые функции, не считая бросания исключений.