Я пытаюсь протестировать фрагмент моего кода, который использует модификацию, поэтому я создал интерфейс для "имитации" возврата, он работает по частям, он может вызывать ответ на запрос очереди, однако не может преобразовать ответ 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
Ошибка ложной модернизации okhttp3.ResponseBody$1 не может быть приведена ⇐ Android
Форум для тех, кто программирует под Android
1765523125
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));
}
Подробнее здесь: [url]https://stackoverflow.com/questions/50103135/mock-retrofit-error-okhttp3-responsebody1-cannot-be-cast[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия