首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MediatorLiveData在JUnit测试中不起作用吗?

MediatorLiveData在JUnit测试中不起作用吗?
EN

Stack Overflow用户
提问于 2018-12-24 15:23:29
回答 1查看 2.3K关注 0票数 7

因此,我尝试将MediatorLiveData用于转换ISO国家代码的相当简单的用例(例如"US")通过使用libphonenumber发送到国家呼叫码(例如"+1")。生成的屏幕运行良好,但即使使用了InstantTaskExecutorRule,JUnit测试似乎也会失败。

示例最小单元测试(在Kotlin中),我认为应该通过,但却失败了:

代码语言:javascript
复制
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
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-24 17:05:24

多亏了Reddit用户matejdro;答案是,就像Schrödinger的猫一样,MediatorLiveData不会自我更新,除非被观察到,所以我需要一个mediatedStr.observeForever{}来迫使它自我更新。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53910409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档