в итоге, я прихожу к тому, что почти всё покрываю e2e и не понимаю как можно хоть сколько-то юнитов написать, и стоит ли вообще, если по скорости не вижу сильно просадки
Думаю, что разницу по скорости/ресурсам заметишь на более менее большой кодовой базе когда тестов будет > 500.
Имхо, чтобы юнит-тесты получалось легче и удобней писать, нужно код приложения писать особым образом. Бить логику на компоненты (logger, persistence-store, api-client) и стараться сделать их слабо-связными по отношению к друг другу (читать в сторону IoC). В результате перед каждым юнит-тестом можно подменить (замокать) реализацию того или иного сервиса:
- подменить Db на in-memory-store,
- не ходить по сети используя in-memory-api-client
- писать in-memory логи