2
통화를 목록으로 표시하는 간단한보기가 있습니다. 앱은 1 초마다 웹 서비스에서 통화를 가져옵니다. 그래서 난 내 뷰 모델에 방법을 다음 있습니다 :RxJava 무한 간격 테스트
fun onViewAppeared() {
currenciesViewStateUpdates.onNext(CurrenciesViewState(true, null))
Flowable.interval(1, TimeUnit.SECONDS)
.flatMapSingle { _ -> currenciesService.calculateCurrencies(Currency("EUR", 10.0)) }
.doOnError { error -> Log.d("LOG", error.message) }
.observeOn(AndroidSchedulers.mainThread())
.subscribe { currencies ->
currenciesViewStateUpdates.onNext(CurrenciesViewState(false, currencies))
}
}
지금 내가 단위 테스트에이 동작이 필요합니다 즉각적인 위해 설정
@Test
fun viewAppearedAndCurrenciesRequestSucceeded_currenciesDisplayed() {
val currencies = listOf(Currency("", 0.0))
Mockito.`when`(currenciesServiceMock.calculateCurrencies(anyCurrency())).thenReturn(Single.just(currencies))
viewModel.getViewStateUpdates().subscribe(testObserver)
viewModel.onViewAppeared()
testObserver.assertSubscribed()
testObserver.assertNoErrors()
testObserver.assertValueCount(2)
assertFalse(testObserver.values()[1].loading)
assertNotNull(testObserver.values()[1].currencies)
testObserver.values()[1].currencies?.let { assertTrue(it.isNotEmpty()) }
}
모든 RxSchedulers은. 문제 : 관찰을 통해 관찰 가능한 구독이 끝날 때까지 영원히 기다리고 있지만 무한 간격이므로 끝내지 않습니다. 어떻게 테스트 할 수 있습니까?