Testing two consecutive LiveData emissions in Coroutines
Kotlin 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 синхронно.