Я пытаюсь протестировать фрагмент моего кода, который использует модификацию, поэтому я создал интерфейс для «симуляции» возврата, он работает по частям, он может вызывать ответ enqueue, однако он не может преобразовать Response <AuthResponse> response
, следует ошибка:
java.lang.ClassCastException: okhttp3.ResponseBody $ 1 нельзя преобразовать в br.com.safety.safetyrecognitionsdk.data.network.auth.AuthResponse
интерфейс для макета
public interface AuthRepositoryBoundary {
Call<AuthResponse> auth(String appKey, String projectId);
}
Класс высмеян
public class AuthSuccessTest implements AuthRepositoryBoundary {
@Override
public Call<AuthResponse> 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);
}
}
осуществление
@Override
public void auth(String appKey, String projectID) {
this.authRepository.auth(appKey, projectID).enqueue(new Callback<AuthResponse>() {
@Override
public void onResponse(Call<AuthResponse> call, Response<AuthResponse> 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<AuthResponse> call, Throwable t) {
authListener.onError(t.getMessage());
}
});
}
Тест:
@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));
}