Так у меня есть проблема, это мой ведущий код:Однако, существуют и другие взаимодействия с этим издеваться:
@Override
public void login(String phone, String password) {
loginView.showProgress();
compositeSubscription.clear();
Subscription subscription = service.login(phone,password)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(data -> {
//Log.d("Login", new Gson().toJson(data));
loginView.hideProgress();
if(data.getSt()==1)
{
saveDataPartner(data.getData().getId_hos(), data.getData().getName(), data.getData().getEmail(), data.getData().getPhone(), data.getData().getAvatar());
loginView.navigateToMainMenu();
}
else {
loginView.showMessage(data.getMsg());
}
}, error -> {
loginView.hideProgress();
loginView.showMessage(ErrorUtils.getErrorMessage(error));
});
}
и я хочу, чтобы проверить это с помощью этого кода:
@Before
public void setUp() throws Exception {
RxAndroidPlugins.getInstance().registerSchedulersHook(new RxAndroidSchedulersHook() {
@Override
public Scheduler getMainThreadScheduler() {
return Schedulers.immediate();
}
});
}
@After
public void tearDown() {
RxAndroidPlugins.getInstance().reset();
}
@Test
public void clickBtnLogin() {
User user = new User();
user.setName("aa");
ResultAPIUser<User> ru = new ResultAPIUser<User>();
ru.setData(user);
ru.setMsg("example message");
ru.setSt(1);
when(service.login("aa","aa")).thenReturn(Observable.just(ru));
loginPresenter.login("aa","aa");
verify(loginView).showProgress();
verify(loginView).hideProgress();
verify(loginView).navigateToMainMenu();
}
так что я установить значение st равно 1, и я думаю, что все должно быть хорошо. Но я получаю это:
Wanted but not invoked:
loginView.hideProgress();
-> at hos.wellhos.com.hosapps.login.LoginPresenterTest.clickBtnLogin(LoginPresenterTest.java:79)
However, there were other interactions with this mock:
loginView.setPresenter(
[email protected]
);
-> at hos.wellhos.com.hosapps.login.LoginPresenter.<init> (LoginPresenter.java:43)
Кто-нибудь может помочь мне решить эту проблему, и я думаю, что сложно проблема в этом?
thx, но я на самом деле реализую RxJavaHooks, как ваше решение в setUp и tearDown, я отредактирую myPost hehehe –
Ха-ха, так что у вас есть. Похоже, вы только изменили mainThreadScheduler, хотя ... вы пытались добавить переопределение для Schedulers.io? – Jahnold
hahaha thx для вашего ответа, как вы говорите в Dynamic Schedulers, я просто создаю класс интерфейса, и я создаю 2 класса для baseSchedulers и instantScheduller, поэтому я просто использую непосредственныйScheduller для теста, и он работает^_ ^, thx dude. Но у меня есть вопрос, почему журнал может повлиять на результат теста? поэтому, когда я раскомментирую Log.d (вы можете увидеть мой код на onNext наблюдаемого), то это вызовет onError? –