Size: a a a

Programming Offtop

2020 March 13

КР

Кирилл Романенко in Programming Offtop
Igor
А как это? Тебе же для этого нужна реальная база или сходить в бекенд
Можно замокать инстансы бд и нетворка. А если просто отдаются лямбды - тогда и мокать не надо.
источник

КР

Кирилл Романенко in Programming Offtop
Alexandr Ermolenko
запилил бы мини примерчик, интересно глянуть.
Я это и так делаю в то время, как должен пилить таску, времени на примерчик вообще нет.((
источник

AD

Aleksey D. in Programming Offtop
Кирилл Романенко
Я это и так делаю в то время, как должен пилить таску, времени на примерчик вообще нет.((
у тебя ж был на MPP пример
источник

КР

Кирилл Романенко in Programming Offtop
Aleksey D.
у тебя ж был на MPP пример
Так я ж не в нём эту дичь творю
источник

DE

Denis Egorov in Programming Offtop
Кирилл Романенко
Я это и так делаю в то время, как должен пилить таску, времени на примерчик вообще нет.((
давай в песочне маленький пример
источник

DE

Denis Egorov in Programming Offtop
на 2 класса
источник

КР

Кирилл Романенко in Programming Offtop
Denis Egorov
давай в песочне маленький пример
Позже.
источник

VS

Vladimir Sh in Programming Offtop
Igor
Недавно и в sqlite завезли JSON. Теперь можно и в ведро-приложениях делать выборки по полям в json.
По моему хорошая тенденция
ого! хорошая новость
источник

AM

Andrew Mikhaylov in Programming Offtop
Кирилл Романенко
Можно замокать инстансы бд и нетворка. А если просто отдаются лямбды - тогда и мокать не надо.
Что там у тебя за сайд-эффекты такие, что ты их покрываешь юнит-тестами, мокая при этом БД с сетью?
источник

AM

Andrew Mikhaylov in Programming Offtop
Мне казалось, их делают максимально тупыми, чтобы там нечего было тестировать юнитами.
источник

I

Igor in Programming Offtop
Поддерживаю, в этом и суть DR (да вообще фп) - отделение логики от эффектов

Юнитами покрываешь логику
2e2 покрываешь что IO действительно работает

Очевидно что бессмысленно (руками) мокать исполнение SQL в sqlite
источник

I

Igor in Programming Offtop
Потом еще возникает идея, что эффекты тоже бывают двух типов
- недерминизмы/io-read (запросить из базы/прочитать prefs)
- сайд-эффекты/io-write (удалить из базы)

И тогда возникает идея заменить кучу разных io-read эффектов на один co-effect
источник

СГ

Сергей Греков in Programming Offtop
Andrew Mikhaylov
Мне казалось, их делают максимально тупыми, чтобы там нечего было тестировать юнитами.
+100500
источник

KD

Konstantin Dovnar in Programming Offtop
Igor
Поддерживаю, в этом и суть DR (да вообще фп) - отделение логики от эффектов

Юнитами покрываешь логику
2e2 покрываешь что IO действительно работает

Очевидно что бессмысленно (руками) мокать исполнение SQL в sqlite
В логику прилетает результат работы запроса в БД.
В юните ты мокаешь данные передаваемые в логику.
=> ты мокаешь результаты работы БД.
источник

KD

Konstantin Dovnar in Programming Offtop
источник

AM

Andrew Mikhaylov in Programming Offtop
В случае с DR тебе не надо ничего мокать, так как ты тестируешь в основном чистую бизнес-логику.
источник

I

Igor in Programming Offtop
Konstantin Dovnar
В логику прилетает результат работы запроса в БД.
В юните ты мокаешь данные передаваемые в логику.
=> ты мокаешь результаты работы БД.
fun globalImpureFunc(...) =
   pureFunc1(...)
       .let { doSideEffectWithDb(it) }
       .let { pureFunc2(it) }

Так ты покрой юнитами pureFunc1 и pureFunc2 (но не globalImpureFunc)
источник

AM

Andrew Mikhaylov in Programming Offtop
Просто в клине она у тебя зависит от интерфейсов, предоставляющих способы потрындеть с БД / сетью, и с ними что-то надо делать для тестов, а в ФП БЛ чистая, в неё снаружи при вызове данные, полученные из сети, передаются.
источник

KD

Konstantin Dovnar in Programming Offtop
Andrew Mikhaylov
В случае с DR тебе не надо ничего мокать, так как ты тестируешь в основном чистую бизнес-логику.
Я понимаю. Мокать не совсем корректное слово тут. Но какие-то данные для тестирования тебе пробрасывать надо.
источник

AM

Andrew Mikhaylov in Programming Offtop
Несомненно
источник