¿Cómo probar el método del presentador en base a un valor devuelto por Observable?

Tener la siguiente implementación real de una function, donde mTallesPreferences.isUserAuthenticated() devuelve un valor de tipo Observable<Boolean> :

 override fun showInitialScreen() { mTallesPreferences.isUserAuthenticated() .subscribe { isAuthenticated -> if (isAuthenticated) mView?.showMainScreen() else mView?.showAccessScreen() mView?.closeCurrentScreen() } } 

¿Cómo puedo probar la unidad si se mView?.showAccessScreen() cuando el suscriptor obtiene isAuthenticated = false ?

He intentado el siguiente enfoque, pero desafortunadamente aparece NullPointerException en la escena.

 class LaunchPresenterTest { @Mock lateinit var mView: LaunchContract.View @Mock lateinit var mTallesPreferences: TallesPreferencesApi private lateinit var mPresenter: LaunchPresenter @Before fun setupLaunchPresenter() { MockitoAnnotations.initMocks(this) mPresenter = LaunchPresenter(mTallesPreferences) } @Test fun testShowInitialScreenNotAuthenticated() { mPresenter.showInitialScreen() Mockito.`when`(mTallesPreferences.isUserAuthenticated()).thenReturn(Observable.just(false)) Mockito.verify(mView).showAccessScreen() } } 

    Tus funciones están en el order incorrecto. Cuando llama a showInitialScreen() no se mofa a mTallesPreferences.isUserAuthenticated() para devolver el valor que desea. Reordere su método de testing como:

     @Test fun testShowInitialScreenNotAuthenticated() { Mockito.`when`(mTallesPreferences.isUserAuthenticated()).thenReturn(Observable.just(false)) mPresenter.showInitialScreen() Mockito.verify(mView).showAccessScreen() }