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