Я тестирую модуль класса Presenter, который подключается к сервису и возвращает токен Когда пользователь получает токен из задачи Async, которая вызывает службы REst, запускается начальный экран. Если маркер нулевой ошибки отображаетсяMocking class class
public void onSignInButtonClicked() {
String username = mSigninView.getUsername();
if (username.isEmpty()) {
mSigninView.showUsernameError(R.string.username_error);
return;
}
String password = mSigninView.getPassword();
if (password.isEmpty()) {
mSigninView.showPasswordError(R.string.password_error);
return;
}
String token = mSigninService.connectToRestServices(username, password);
if (token != null) {
mSigninView.startHomeActivity(token);
} else {
mSigninView.showLoginError(R.string.login_error);
}
}
Для модульного тестирования:
@Test
public void shouldStartHomeScreenWhenUsernameAndPasswordAreCorrect() throws Exception {
Mockito.when(mView.getUsername()).thenReturn("[email protected]");
Mockito.when(mView.getPassword()).thenReturn("test");
Mockito.when(mService.connectToRestServices("[email protected]", "test")).thenReturn("test");
mPresenter.onSignInButtonClicked();
Mockito.verify(mView).startHomeActivity("test");
}
Ошибка при тестировании
Wanted, но не вызывается: signin_View.startHomeActivity ("тест"); -> в com.ssd.cypress.uimobile.SigninPresenterTest.shouldStartHomeScreenWhenUsernameAndPasswordAreCorrect (SigninPresenterTest.java:72)
В код Строковый = mSigninService.connectToRestServices (имя пользователя, пароль); Он соединяется с конкретным классом, а токен равен нулю. Есть ли способ обмануть этот connectToService, чтобы он возвращал SomeValue.
Если я не ошибаюсь, ваш токен не равен нулю, и он пытается выполнить startHomeActivity («test»). Поэтому он возвращает «SomeValue». Попробуйте выполнить модульный тест в режиме отладки и посмотреть, что именно представляет собой значение токена, которое вы получаете до того, как будет произведено нулевое сравнение. – Rg90
спасибо за ваш отзыв !!! Маркер всегда равен нулю. В моем коде конструктор для презентатора – Rick
public SigninPresenter (вид Signin_View) { mSigninView = view; mSigninService = новый Sign_in_service(); } – Rick