我有一个函数,我想测试哪些在okHttp回调中运行。我正在尝试使用Robolectrics进行测试,但回调从未执行过。我认为这是因为测试在请求之后继续而不等待okHttp返回。到目前为止,我已经尝试过:使用Robolectric测试okHttp请求 - 回调
ShadowLooper.pauseMainLooper();
Robolectric.flushBackgroundScheduler();
ShadowLooper.unPauseMainLooper();
但这并不奏效。有什么建议么?
编辑:
这里是我的代码示例:
ApiClient.sendSomeDataToServer(data, callback);
哪里ApiClient是包含okHttp客户一个辅助类。 sendSomeDataToServer API调用看起来是这样的:
public static void sendSomeDataToServer(MyObject data, Callback callback){
final Request request = new Request.Builder()
.url(API_SOME_URL)
.post(RequestBody.create(JSON, myObject.getAsJson().toString()))
.build();
sHttpClient.newCall(request).enqueue(callback);
}
凡sHttpClient是一个初始化的OkHttpClient。
我可以通过在我的测试代码中强制Thread.sleep(5000)
并提供自定义回调来测试上述的执行情况。我试图测试的代码在回调中。任何建议如何我可以测试?我真的不想改变主代码以适应测试框架 - 应该是相反的。
你使用任何依赖注入? – 2015-04-01 09:15:32