в Мекке? 🤔
Приватные функции тестить, например
А зачем приватные функции тестить?
Затем же зачем и публичные тестить
Я гдето слышал что покрывать тестами приватные функции многие считают code smell
в приватных можно накуралесить, что паблик ф-ции будут гарантировано выдавать шлак 🤷♂️
Мб речь о том, что если приватная функция выполняет настолько сложную многокейсовую логику, что её нужно прям отдельно тестить, то тогда у неё достаточно много ответственности, чтобы сделать её публичной в отдельном модуле, тестить там и просто импортить?
Вот мне тоже так думается. Приватная функция это же по идее деталь имплементации той публичной функци, которая ее использует
И тест на паблик функцию это покажет же
тест покажет, что ф-я вернула шлак. а тест на приват ф. покажет, что она вернула данные , которые (в первом приближении) привели к шлаку от публичной ф. 🤷♂️ поэтому будет проще разобраться: это код самой паб. функции тупит или приватная отдала что-то не то… основная де задача: локализовать место «где лажанул». поэтому, не вижу крамолы тестить и приватные.
Понимаю, звучит разумно. А поделись пожалуйста (ничего что на ты?) при таком подходе решение на что писать тест как принимается? На все публичные + некоторые приватные, некоторые пуб+ некоторые приват или на все вообще? И второй вопрос как принимается решение что функция достаточно выросла чтобы стать публичной?
1. на ты оч даже норм. 🤝 2. интуитивно. я знаю критические места кода, их и покрываю. совсем очевидные участки кода не трогаю. у нас не практикуется: притягивать коверэйдж кода к 100% или почти к ста. (вот прямо сейчас, на текущей задаче, у меня 75%. и это оч даже замного) 3. публичность ф. решается на стадии проектирования. хотя, есть случаи, что приходится вытягивать приват. ф-цию в паблик. сейчас точно не сформулирую условия,- редко было…
👍 1. Про ковереж согласен, я тоже считаю что просто фармить циферки ни к чему. 2. Вот это очень интересно. Было бы здорово, если смог бы вспомнить что например самое главное при решении функцию сделать публичной. - Связано ли это с ее сложностью? - Или потому что она большая и использует много других приватных? - Или сайд эффекты? - Или она полезна будет сама по себе гдето еще, кроме оригинальной публичный
В модуле сделать @compile (if Mix.env() == :test do :export_all end) и тестировать приватные.
Тогда невалидный код пройдёт тесты
В смысле «невалидный»?
Тот код, который вызывает приватные функции из другого модуля
Обсуждают сегодня