если в разрезе TDD - я например заставляю людей в тестах делать несколько ограничений:
- для зависимостей которые возвращают какой-то результат использовать стабы, моки только для void
- если ты подменяешь реализацию контракта - подменяй реализацию ВСЕХ методов согласно контракту. Пример - size
и isEmpty
у коллекций - если size = 0 то isEmpty = true. Если тебе для этого приходится подменять 50 методов - значит ты нарушил ISP. И не важно что реализации только size нужен
- стабить можно только зависимости контракт которых ты контролируешь.