I am trying to test some LiveData in a Viewmodel
I have mocked both LifecycleOwner and LifecycleRegistry
My test method below:
@Test
public void testLifecycle(){
assertThat(viewModel.user().hasObservers(), is(false));
Observer<FirebaseUser> firebaseUserObserver = (Observer<FirebaseUser>)mock(Observer.class);
viewModel.user().observe(lifecycleOwner, firebaseUserObserver);
assertThat(viewModel.user().hasObservers(), is(true));
lifecycleRegistry.setCurrentState(Lifecycle.State.RESUMED);
assertThat(viewModel.user().hasActiveObservers(),is(true)); //assertion failure
lifecycleRegistry.setCurrentState(Lifecycle.State.DESTROYED);
assertThat(viewModel.user().hasActiveObservers(), is(false));
}
When I run this method I get a assertion failure at:
assertThat(viewModel.user().hasActiveObservers(),is(true));
I don't understand why this fails. hasActiveObservers() should return true if LiveData has at least one observer whose lifecycle is Lifecycle.State.STARTED or Lifecycle.State.RESUMED state (this means state is active).
Have I missed something here?