Пример модульного тестирования архитектуры Android в реальном времени - PullRequest
0 голосов
/ 04 сентября 2018
@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)*/
}

Может ли кто-нибудь объяснить, что такое wtf: verify(observer, never()).onChanged(any()) делает в Google образец GithubBrowser ? Я просто не понимаю, называя setLogin() увольняет наблюдателя, так как, черт возьми, мы можем проверить, что onChanged() никогда не вызывался, когда мы специально вызывали его на предыдущей строке!?

1 Ответ

0 голосов
/ 05 сентября 2018

вызов setLogin () запускает наблюдателя

Нет, для вызова setLogin просто верните свой foo LiveData, базовое значение еще не обновлено, пока вы не установите его (foo.value = fooValue). Так что эта строка test onChange не вызывается, если не получено значение.

...