< /blockquote>
Schnittstelle zum Spott < /p> < />
ausgegeben werden.
Code: Select all
public interface AuthRepositoryBoundary {
Call auth(String appKey, String projectId);
}
< /code>
Klasse verspottet < /p>
public class AuthSuccessTest implements AuthRepositoryBoundary {
@Override
public Call auth(String appKey, String projectId) {
ResponseBody body = ResponseBody.create(
MediaType.parse("application/json"),
MockAuth.AUTH_SUCCESS
);
Response aResponse = Response.success(body, new okhttp3.Response.Builder() //
.code(201)
.message("OK")
.body(body)
.protocol(Protocol.HTTP_1_1)
.request(new Request.Builder().url("http://localhost/").build())
.build());
return Calls.response(aResponse);
}
}
< /code>
Implementierung < /p>
@Override
public void auth(String appKey, String projectID) {
this.authRepository.auth(appKey, projectID).enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
switch (response.code()) {
case 201:
authListener.onSuccess(response.body());
break;
case 401:
authListener.onUnauthorized("Unauthorized");
break;
default:
authListener.onError("Server error");
break;
}
}
@Override
public void onFailure(Call call, Throwable t) {
authListener.onError(t.getMessage());
}
});
}
< /code>
Der Test: < /p>
@Test
public void when_success_authentication_should_be_invoke_on_success() {
this.authListenerMock = mock(AuthListener.class);
this.authRepositoryMock = mock(AuthRepositoryBoundary.class);
this.authSuccessTest = new AuthSuccessTest();
this.safetyRecognition = new SafetyRecognition()
.setCredentials("project_id", "key_id")
.auth(new Authentication(this.authListenerMock, this.authSuccessTest));
verify(this.authListenerMock).onSuccess(ArgumentMatchers.any(AuthResponse.class));
}
Mobile version