нужен DI ? Я могу сделать разных функций, в других местах во входных параметрах принимать тоже функции, скомпоновать их чтобы работало; а для тестов вместо моков передавать тестовые функции
> принимать тоже функции Вот тебе DI
Надо. Чем ты это хочешь заменить?
посмотри доклад симана про dependency rejection
вот скрин из доклада, а как тогда тестировать эту функцию ? в ней же используются "боевые" функции для работы с бд. тогда для тестов надо держать отдельно бд с подготовленными данными и т.д. ?
а вот это самая мякотка) эту функцию не нужно тестировать юнит тестом вообще. Ее нужно тестировать интеграционным тестом на реальном энве (на стейдже например)
а почему не использовать partial application и добавить еще юнит тестов
а потому что в этой функции уже нет логики, только композиция функций, и один прогон интеграционного теста все протестирует
Я для одного из своих мини проектов делал просто 2 реализации стореджей - 1 на редисе (основная) и 1 чисто InMemory. Сами хранилища вынесены в интерфейсы. В целом позволяло и юнит тестами гонять достаточно сложную логику. Но я думаю что рано или поздно логика всего приложения может стать просто слишком сложной для юнит теста
Это если у тебя они идентичные. Иначе будет а-ля EF's In Memory Database, который, вроде, как и есть и для какой-то тривиальщины в тестах люди любили юзать, то даже в доках описано, что оно не ведет себя как реляция и "думайте" надо ли оно вам
Обсуждают сегодня