Как написать модульный тест для этой функции с RxJava - PullRequest
0 голосов
/ 09 июля 2019

Я недавно начал изучать Mockito, TestObserver для тестирования RxJava.Но когда я пишу тест для этого метода входа, я сталкиваюсь с некоторыми проблемами:

  1. Мой метод login () вызывает другой закрытый метод из того же класса (LoginViewModel).Как я могу использовать когда .. затем вернуться, чтобы заглушить его результат.
  2. Метод login () также вызывает метод подписки (Disposable одноразовые) из своего суперкласса BaseViewModel для добавления одноразовых.
  3. login () также использует переменную класса в выражении «if». (Я также пытаюсьустановить значение для этих переменных, но оно не работает)

Я пытался использовать @sky для инициализации LoginViewModel, но его класс ужина - AndroidViewModel.Я не могу это инициировать.Если у вас есть идеальная или ключевая работа, я действительно ценю это.Спасибо заранее

        if (!validate()) {// private method
            return;
       }
        subscribe( 
                repository.login(username, password)
                        .observeOn(AndroidSchedulers.mainThread())
                        .doOnSubscribe(disposable -> getLoadingLiveData().postValue(true))
                        .doAfterTerminate(() -> getLoadingLiveData().postValue(false))
                        .subscribe(response -> {
                            if (response.isSuccess()) {

                                if (mOrganizationId > 0) { // class variable
                                    //do st
                                }
                                String latestVersion = response.getVersion();
                                String currentVersion = Utils.getVersion();
                                if (response.isForceUpdate() && !TextUtils.equals(latestVersion, currentVersion)) {
                                    //Notify via Eventbus
                                    return;
                                }
                                if (!TextUtils.isEmpty(mToken) && response.getUserId() == mUserId) {
                                    confirmMail(mToken);
                                } else {
                                    // success
                                }
                            } else {
                                /error
                            }
                        }, this::handleError)
        );
    }
...