Schedulers.io () выдавая исключение NullPointerException в моих модульных тестах - PullRequest
1 голос
/ 22 октября 2019

Я пытаюсь создать модульные тесты для метода моего ViewModel, который использует RxJava / RxKotlin .

fun doLogin(address: String, serial: String) {
    mLoading.value = true
    mCompositeDisposable.add(
        mRepository
            .doLogin(address, createJsonArray(serial, generatePinJSON()))
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeBy(
                onSuccess = { json ->
                    /** CODE **/
                },
                onError = { error ->
                    /** CODE **/
                }
            )
    )
}

Но когда Schedulers.io () вызывается в методе test, он вызывает исключение NullPointerException.

Я пытался использовать этот подход ниже:

https://medium.com/@dbottillo/how-to-unit-test-your-rxjava-code-in-kotlin-d239364687c9 (создание правила)

https://medium.com/@PaulinaSadowska/writing-unit-tests-on-asynchronous-events-with-rxjava-and-rxkotlin-1616a27f69aa (передача планировщиков в ViewModel)

В обоих подходах говорится, что используется Schedulers.trampoline () в методе испытаний. Но все равно выдает ошибку.

У меня заканчиваются варианты, не могу понять, почему это происходит.

Может ли кто-нибудь мне помочь?

Спасибо.

1 Ответ

1 голос
/ 22 октября 2019

По моему опыту, вы получили ноль, потому что вы не издевались mRepository.doLogin. Попробуйте добавить это в начале вашей тестовой функции

whenever(mRepository.doLogin).thenReturn(...)
...