私はmvpパターンに基づいてアプリのためのmockitoテストを書いています。以下は、私はので、私はインターフェイスを使用している方法のLoginPresenter
クラスでonLoginSuccess()
& onLoginFailure()
をチェックするためのテストを書くことで問題を抱えていログイン・アクティビティーユニットテスト - リスナーを模擬する方法
public class LoginActivity extends AppCompatActivity implements LoginContract.ILoginView{
presenter = new LoginPresenter(this);
@Override
public void startMoviesActivity() {
startActivity(new Intent(this, MoviesActivity.class));
}
}
public class LoginContract {
public interface ILoginView {
...
void startMoviesActivity();
}
public interface ILoginService {
interface OnLoginFinishedListener {
void onLoginSuccess();
void onLoginFailure();
}
void login(String username, String password, OnLoginFinishedListener
listener);
}
}
public class LoginPresenter implements LoginContract.ILoginService.OnLoginFinishedListener {
private LoginContract.ILoginView view;
private LoginContract.ILoginService service;
public LoginPresenter(LoginContract.ILoginView view) {
this.view = view;
service = new LoginService();
}
public void validateCredentials(String email, String password) {
if(email.isEmpty()){
view.setEmailEmptyError(R.string.error_email_empty);
return;
}
if(password.isEmpty()){
view.setPasswordEmptyError(R.string.error_password_empty);
return;
}
view.showProgressDialog();
service.login(email,password,this);
}
@Override
public void onLoginSuccess() {
view.hideProgressDialog();
view.startMoviesActivity();
}
@Override
public void onLoginFailure() {
view.hideProgressDialog();
view.showUnsuccessfulLoginError(R.string.error_login_unsuccessful);
}
}
public class LoginService implements LoginContract.ILoginService {
@Override
public void login(String username, String password, final
OnLoginFinishedListener listener) {
// Contains REST API which calls listener.onLoginSuccess() on valid credentials and listener.onLoginFailure on invalid.
}
}
ためのコードです。 service.login(email,password,this);
に電話がかかったときは、LoginPresenter
のメソッドに戻り、startMoviesActivity()
メソッドを呼び出してLoginActivity
に戻ります。私はあなたが助けることができるならば、初心者です。ありがとうございました。