Getting Robolectric to work with Volley

后端 未结 2 1232
我在风中等你
我在风中等你 2021-02-05 12:34

I am trying to get Volley working with Robolectric. I can see that my HTTP request is getting called, and parseNetworkResponse is getting called (I\'m sending a custom subclass

2条回答
  •  逝去的感伤
    2021-02-05 13:07

    I solved that same problem by replacing the RequestQueue's ResponseDelivery with one that doesn't use the Looper.getMainLooper() but a new Executor. Example code:

    public static RequestQueue newRequestQueueForTest(final Context context, final OkHttpClient okHttpClient) {
        final File cacheDir = new File(context.getCacheDir(), "volley");
    
        final Network network = new BasicNetwork(new OkHttpStack(okHttpClient));
    
        final ResponseDelivery responseDelivery = new ExecutorDelivery(Executors.newSingleThreadExecutor());
    
        final RequestQueue queue =
                new RequestQueue(
                        new DiskBasedCache(cacheDir),
                        network,
                        4,
                        responseDelivery);
    
        queue.start();
    
        return queue;
    }
    

    Note: use Robolectric-2.2-SNAPSHOT, the previous version doesn't play well with Volley.

    Hope this helps

提交回复
热议问题