Ошибка ложной модернизации okhttp3.ResponseBody$1 не может быть приведенаAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ошибка ложной модернизации okhttp3.ResponseBody$1 не может быть приведена

Сообщение Anonymous »

Я пытаюсь протестировать фрагмент моего кода, который использует модификацию, поэтому я создал интерфейс для "имитации" возврата, он работает по частям, он может вызывать ответ на запрос очереди, однако не может преобразовать ответ Response response, следует ошибка:


java.lang.ClassCastException: okhttp3.ResponseBody$1 не может быть привести к br.com.safety.safetyrecognitionsdk.data.network.auth.AuthResponse


интерфейс для имитации

public interface AuthRepositoryBoundary {

Call auth(String appKey, String projectId);

}


Класс высмеивается

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);
}

}


реализация

@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());
}
});
}


Тест:

@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));
}


Подробнее здесь: https://stackoverflow.com/questions/501 ... ot-be-cast
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»