Я пытаюсь заставить Volley работать с Robolectric. Я вижу, что мой HTTP-запрос получает вызов, и вызывается parseNetworkResponse (я отправляю пользовательский подкласс JsonRequest), но мой прослушиватель НЕ получает вызов. Любой совет? Вот пример кода:Получение Robolectric для работы с Volley
@Test
public void testTypeAheadClient() throws Exception {
Robolectric.getFakeHttpLayer().interceptHttpRequests(false);
//mRemoteRequestQueue and mCustomRequest are set up previously
mRemoteRequestQueue.add(mCustomRequest);
}
private static class CustomRequest extends JsonRequest<MyObject> {
public CustomRequest(String url,
Response.Listener<MyObject> listener,
Response.ErrorListener errorListener) {
super(Request.Method.GET, url, null, listener, errorListener);
}
@Override
protected Response<MyObject> parseNetworkResponse(NetworkResponse response) {
System.out.println("in parseNetworkResponse");
try {
MyObject myObject = new MyObject(new JSONArray(new String(response.data, "UTF-8")));
return Response.success(myObject, HttpHeaderParser.parseCacheHeaders(response));
} catch (Exception e) {
e.printStackTrace();
return Response.error(new ParseError(e));
}
}
}
Как вы используете обратный вызов, я полагаю, что это асинхронная библиотека. Чтобы использовать Robolectric с Android Async Http lib, вам нужно установить свой собственный пул потоков. Возможно, в этом случае можно принять одно и то же решение. https://groups.google.com/forum/#!msg/robolectric/Z3Yg04gL4hg/iwYlnvHAkO4J – Axxiss
Если у вас есть это, вы можете опубликовать весь тестовый код? –