"Если для модульного теста нужна имитация, я обычно переношу тест на уровень интеграции." - это цитата из статьи The Test Pyramid Is a Lie (and What I Do Instead) (https://www.milanjovanovic.tech/blog/the-test-pyramid-is-a-lie-and-what-i-do-instead) И мне очень близка эта мысль. Меня всегда удивляло: зачем делать какие-то непонятные объекты (моки и т.п.) для тестирования, если можно проверить как в реальности работает. Для меня тестирование написанного кода - это не просто показатель покрытия тестами, а проверка тонких мест, которые могут порваться.