Найти в Дзене

Тестируем Koin: checkModules vs verifyAll

Недавно мне стало интересно, как протестировать Koin, чтобы убедиться, что он правильно инициализируется и не вызывает проблем в рантайме. Первая же ссылка в Яндексе привела меня к документации, где описаны два метода: checkModules и verifyAll. Давайте разберёмся, в чём разница между ними и когда какой метод использовать. Этот метод проверяет, что все зависимости, указанные в модулях, могут быть найдены и правильно созданы. Он не создаёт реальные объекты, а просто проверяет, что всё у нас указано и найдено. Код в тесте максимально простой: class CheckModulesTest : KoinTest {
@Test
fun verifyKoinApp() {
koinApplication {
modules(module1,module2)
checkModules()
}
}
} Прям из документации стащила: https://insert-koin.io/docs/reference/koin-test/checkmodules Когда использовать: когда нам нужно быстро проверить структуру модулей и что там всё корректно, не создавая объекты. Тут просто пробежимся по всем модулям, посмотрим на клас
Оглавление

Недавно мне стало интересно, как протестировать Koin, чтобы убедиться, что он правильно инициализируется и не вызывает проблем в рантайме. Первая же ссылка в Яндексе привела меня к документации, где описаны два метода: checkModules и verifyAll. Давайте разберёмся, в чём разница между ними и когда какой метод использовать.

checkModules:

Этот метод проверяет, что все зависимости, указанные в модулях, могут быть найдены и правильно созданы. Он не создаёт реальные объекты, а просто проверяет, что всё у нас указано и найдено.

Код в тесте максимально простой:

class CheckModulesTest : KoinTest {

@Test
fun verifyKoinApp() {

koinApplication {
modules(module1,module2)
checkModules()
}
}
}

Прям из документации стащила: https://insert-koin.io/docs/reference/koin-test/checkmodules

Когда использовать: когда нам нужно быстро проверить структуру модулей и что там всё корректно, не создавая объекты. Тут просто пробежимся по всем модулям, посмотрим на классы и что для них всё есть в нужном порядке.

verifyAll или просто verify:

Этот метод проводит более глубокую проверку. Он не только проверяет, что зависимости могут быть найдены, но и создает экземпляры всех зависимостей. Он прям создает настоящие объекты и смотрит, что всё ок с конструкторами.

Код тоже очень простой (и этот пример стащила из документации):

class NiaAppModuleCheck {

@Test
fun checkKoinModule() {
niaAppModule.verify(
// List types used in definitions but not declared directly (like parameters injection)
extraTypes = listOf(...)
)
}
}

Тут пример с verify, но можем использовать verifyAll и сразу все модули проверить.

Когда использовать: если нам нужно проверить не только наличие зависимостей, но и что их объекты могут быть корректно созданы. Полезно, если у нас какие-то сложные настройки с параметрами и запутанными связями.

Дубль статей в телеграмме — https://t.me/android_junior

Мои заметки в телеграмме — https://t.me/android_junior_notes