如何使用RxJava编写此功能的单元测试

时间:2019-07-09 03:00:38

标签: mockito rx-java2 powermock

我最近开始学习TestObserver的Mockito,以测试RxJava。但是当我为此登录方法编写测试时,遇到了一些问题:

  1. 我的login()方法从同一类(LoginViewModel)调用其他私有方法。我该如何使用when..then返回以存根其结果。
  2. login()方法还从其超类BaseViewModel调用subscribe(可抛弃型)来添加可抛弃型。
  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)
        );
    }

0 个答案:

没有答案