Есть метод презентера:
unsubscribeOnDrop(authSource.signInPhoneVerify(it, code)
.flatMap {
settings.account().setAuth(it)
authSource.profile()
}
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
if (it) {
view?.startApp()
} else {
view?.showUserNotCashier()
}
}, this::handlePhoneSignError))
и тест для этого метода:
@Test
fun checkCode() {
presenter.phone = TEST_PHONE
val code = "12345"
val auth = Auth("id", "access", "refresh")
`when`(authSource.signInPhoneVerify(TEST_PHONE, code)).thenReturn(Single.just(auth))
`when`(authSource.profile()).thenReturn(Single.just(true))
presenter.checkCode(code)
verify(settings).account()
verify(authSource).profile()
verify(view).startApp()
когда в тесте стартует вызов метода презентера, то первый мок
_`when`(authSource.signInPhoneVerify(TEST_PHONE, code)).thenReturn(Single.just(auth))срабатывает нормально, и settings.account().setAuth(it) вызвается verify(settings).account()проходит. А дальше такое чувство что authSource.profile() не вызывается в презентере, хотя
метод замокал.
В дебаге в rx цепочке падает в ошибку с NPE без сообщения...
Rx настроен на TestScheduler
есть какие-то особенности как надо обрабатывать flatMap при тестировании?
Обсуждают сегодня