#Coroutines #LiveData #Test
Testing two consecutive LiveData emissions in CoroutinesKotlin Coroutines
получают все большую популярность и активнее интегрируются в последние решения от Google, поэтому стоит рассматривать подходы, которые рекомендуется использовать.
В
статье рассматривается проблема тестирования эмита 2 последовательных значений
LiveData
, одно из которых приходит из
Coroutine
.
Автор рассказывает о нескольких решениях:
1️⃣ TestCoroutineDispatcher из библиотеки
kotlinx.coroutines.test
, который позволяет приостанавливать и возобновлять
CoroutineDispatcher
2️⃣ Использование
LiveData.asFlow()
. Пример можно найти в
Pull RequestХорошие практики использования
Dispatcher
-ов в тестах:
👉
Не используйте стандартный класс Dispatchers, а доставляйте зависимости сами с помощью DI. Это позволит вам подменять их в тестах и иметь больший контроль
👉
Используйте TestCoroutineDispatcher вместо Dispatchers.Unconfined для тестов.
TestCoroutineDispatcher
дает больше гибкости для тестирования, чем
Dispatchers.Unconfined
, но последний все также может успешно выполнять Coroutine синхронно.