Я настроил ViewModel
на бесконечный повтор вызова API следующим образом:
useCase.fireAPICall(params)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.repeat()
.delay(1, TimeUnit.SECONDS)
.subscribe(::onSuccess, ::onFailed)
В своих модульных тестах я пытаюсь смоделировать вызов API и проверить, действительно ли LiveData
внутри ViewModel
(обновляется в методе ::OnSuccess
) обновляется соответствующим образом.
Работающий модульный тест, который проверяет сбой:
val error = Throwable("")
// Arrange
Mockito.`when`(repo.apiCall(params))
.thenReturn(Single.error(error))
// Act
viewModel.init()
// Verify
Mockito.verify(postDetailsViewStateObserver)
.onChanged(Error(error))
** Не работает: ** f Вместо этого я пытаюсь смоделировать действительный ответ от этого API вызов с:
// Arrange
Mockito.doReturn(Single.just(Success(result, list)))
.`when`(repo).apiCall(params)
Затем ViewModel
repeat()
генерирует бесконечный l oop, который блокирует мой модульный тест, не завершая его никогда.
Вопрос: как мы можем проверить repeat()
ситуацию, проверив только первое, что испускается в этой наблюдаемой?