Итак, я попытался использовать MediatorLiveData для довольно простого варианта использования для преобразования кода страны ISO (например, «США») в код вызова страны (например, «+1») с помощью libphonenumber.Получившийся экран работает нормально, но, похоже, не проходит тесты JUnit, даже когда используется InstantTaskExecutorRule.
Пример минимального модульного теста (в Kotlin), который, по моему мнению, должен пройти, но не проходит:
import android.arch.core.executor.testing.InstantTaskExecutorRule
import android.arch.lifecycle.MediatorLiveData
import android.arch.lifecycle.MutableLiveData
import org.junit.Assert.assertEquals
import org.junit.Rule
import org.junit.Test
class MediatorLiveData_metaTest {
@get:Rule
val instantTaskExecutorRule = InstantTaskExecutorRule()
@Test
fun mediatorLiveData_metaTest() {
val sourceInt = MutableLiveData<Int>()
val mediatedStr = MediatorLiveData<String>()
mediatedStr.addSource(sourceInt) {
mediatedStr.value = it.toString()
}
sourceInt.value = 123
assertEquals("123", mediatedStr.value) // says mediatedStr.value is null
}
}