代码之家  ›  专栏  ›  技术社区  ›  Daniel Wilson

Android架构示例单元测试实时数据

  •  1
  • Daniel Wilson  · 技术社区  · 6 年前
    @Test
    fun sendResultToUI() {
    
        val foo = MutableLiveData<Resource<User>>()
        val bar = MutableLiveData<Resource<User>>()
        `when`(userRepository.loadUser("foo")).thenReturn(foo)
        `when`(userRepository.loadUser("bar")).thenReturn(bar)
        val observer = mock<Observer<Resource<User>>>()
        userViewModel.user.observeForever(observer) //Create foo and bar, observe user live data
    
        userViewModel.setLogin("foo")
        verify(observer, never()).onChanged(any()) //Make sure that setting login to foo did not touch vm.user?
    
        /*val fooUser = TestUtil.createUser("foo")
        val fooValue = Resource.success(fooUser)
        foo.value = fooValue
        verify(observer).onChanged(fooValue)
        reset(observer)
    
        val barUser = TestUtil.createUser("bar")
        val barValue = Resource.success(barUser)
        bar.value = barValue
        userViewModel.setLogin("bar")
        verify(observer).onChanged(barValue)*/
    }
    

    谁能解释一下这句话: verify(observer, never()).onChanged(any()) GithubBrowser 样品?我只是不明白,打电话来 setLogin() 观察家那我们他妈的怎么能证实呢 onChanged() 当我们在前一行特别触发它的时候从来没有被调用过!?

    1 回复  |  直到 6 年前
        1
  •  1
  •   jaychang0917    6 年前

    调用setLogin()激发观察者

    setLogin 把你的a还给我 foo LiveData foo.value = fooValue ). 所以这条线测试 onChange 如果没有收到值,则不调用。