J'essaie de faire fonctionner Volley avec Robolectric. Je peux voir que ma requête HTTP est appelée, et que parseNetworkResponse est appelée (j'envoie une sous-classe personnalisée de JsonRequest), mais mon Listener N'EST PAS appelé. Aucun conseil? Voici un exemple de code:Obtenir Robolectric pour travailler avec 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));
}
}
}
Comme vous utilisez le rappel, je suppose que c'est une bibliothèque asynchrone. Pour utiliser Robolectric avec Android Async Http lib, vous devez définir votre propre pool de threads. Peut-être que dans ce cas la même solution peut être adoptée. https://groups.google.com/forum/#!msg/robolectric/Z3Yg04gL4hg/iwYlnvHAkO4J – Axxiss
Si cela vous arrivait, pourriez-vous poster tout votre code de test? –