【发布时间】:2017-08-21 19:48:31
【问题描述】:
我正在为基于 mvp 模式的应用程序编写模拟测试。以下是登录活动的代码
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.
}
}
由于我使用接口的方式,我在编写用于检查 LoginPresenter 类中的 onLoginSuccess() 和 onLoginFailure() 的测试时遇到问题。当调用service.login(email,password,this);时,它应该返回对LoginPresenter中的那些方法的调用,这反过来又调用LoginActivity中的startMoviesActivity()方法。我是mockito的初学者......如果你能帮忙的话。谢谢。
【问题讨论】: