Kotlin. Exhaustive when и полное покрытие кода тестами
Kotlin как язык требует, чтобы конструкция `when` (эквивалент switch) была "насыщенной", полной (exhausitive) и соответственно мы иногда вынуждены добавлять `else` даже если по факту мы перебрали все известные варианты. И так как мы не можем реально попасть в этот бранч кода - он остается не покрытым тестами и страдает coverge. В этом видео показан плохой, хороший и самый хороший вариант решения этой проблемы. ИТАК ЕСЛИ ВЫ ЗНАЕТЕ В ЧЕМ ПРОБЛЕМА ПОКРЫТИЯ У НЕДОЗАКРЫТОГО when МОЖЕТЕ МОТАТЬ ДО 19:02 !!! ЕСЛИ ХОТИТЕ ПОСМОТРЕТЬ ПЛОХОЕ РЕШЕНИЕ ИЛИ СРАЗУ ДО 31:18 если хотите быстрого ответа 1. 01:04 знакомимся со средой в которой будем работать и что там к чему 2. 02:52 начинаем выполнять условное ТЗ 3. 07:00 собс твенно получили exhausitive when и разобрали его свойства и немного обсуждаем (можно минуту промотать если понятно в чем смысл) 4. 08:15 логика продукта начинает усложняться и мы сначала пытаемся удержаться в виде простого when 5. 12:28 наконец поняли что просто плоской матрицы уже нет и начинаем делать логику на правилах (можно промотать если понятно к чему идет) 6. 15:43 наконец поняли что просто when(action) уже не годится (можно мотануть если понятно как пишется такой код) 7. 19:02 все мы дописали вроде все варианты кода, но kotlin требует else и происходит противоречие exhusitive и покрытия кода 8. 21:30 разбираем самый плохой вариант, как он затаивается и потом выпрыгивает в проде ЕСЛИ НЕ ИНТЕРЕСНО СМОТРЕТЬ ДО ЧЕГО ДОВОДИТ ПЛОХОЙ ВАРИАНТ МОЖНО МОТАНУТЬ ДО 31:18 9. 31:18 собственно summum bonum - делаем идеальный вариант!!! #kotlin #coverage #when #unittesting