Я пытался создать Unit Test с помощью Rxjava + Retrofit, но он всегда выдавал ошибку.
Я перепробовал все учебники и справочные материалы по моим вопросам. Я добился успеха, когда создал модульное тестирование другого метода (другой случай), но в этом случае потерпел неудачу (Rx + модернизация).
Код запроса данных:
fun getDetailEvent(idEvent: String?) {
view.showLoading()
apiService.getDetailEvent(idEvent)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe {
val compositeDisposable: CompositeDisposable? = null
compositeDisposable?.add(it)
}
.doFinally { view.hideLoading() }
.subscribe({
val listModel = it
if (listModel != null) {
view.onDetailEventLoaded(listModel)
} else {
view.onDetailEventLoadFailed("Empty or Error List")
}
},
{
val errorMessage = it.message
if (errorMessage != null) {
view.onDetailEventLoadFailed(errorMessage)
}
})
}
Код юнит-теста:
class DetailNextMatchPresenterTest {
@Mock
private lateinit var view : DetailNextMatchView
@Mock
private lateinit var apiService: ApiService
private lateinit var presenter: DetailNextMatchPresenter
@Before
fun setup(){
MockitoAnnotations.initMocks(this)
presenter = DetailNextMatchPresenter(view, apiService)
}
@Test
fun getDetailEvent() {
val event : MutableList<EventModel> = mutableListOf()
val response = ResponseEventModel(event)
val idEvent = "44163"
`when`(apiService.getDetailEvent(idEvent)
.test()
.assertSubscribed()
.assertValue(response)
.assertComplete()
.assertNoErrors()
)
presenter.getDetailEvent(idEvent)
verify(view).showLoading()
verify(view).onDetailEventLoaded(response)
verify(view).hideLoading()
}
}
Я ценю все предложения. Спасибо