我有一個函數,我想測試哪些在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