Tôi đang cố gắng để có được Volley làm việc với Robolectric. Tôi có thể thấy rằng yêu cầu HTTP của tôi đang được gọi và parseNetworkResponse đang được gọi (tôi đang gửi một lớp con tùy chỉnh của JsonRequest), nhưng Trình nghe của tôi KHÔNG được gọi. Lời khuyên nào? Đây là một mẫu mã:Bắt Robolectric để làm việc với 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));
}
}
}
Khi bạn đang sử dụng gọi lại, tôi cho rằng đó là một thư viện không đồng bộ. Để sử dụng Robolectric với Android Async Http lib, bạn cần thiết lập nhóm chủ đề của riêng mình. Có lẽ trong trường hợp này, cùng một giải pháp có thể được áp dụng. https://groups.google.com/forum/#!msg/robolectric/Z3Yg04gL4hg/iwYlnvHAkO4J – Axxiss
Nếu bạn làm việc này, bạn có thể đăng toàn bộ mã thử nghiệm của mình không? –