Robolectric 2.3-SNAPSHOT を使用して、バックグラウンドでリクエストを実行するオブジェクトをテストしたいと考えています。それを分離するために、返された HttpResponse をモックしようとしていますが、数時間投資しても成功しませんでした。
誰でも複製できるプロジェクトを作成しました。単純に./gradlew check https://github.com/Maragues/RobolectricDummyProjectを実行します(git clone https://github.com/Maragues/RobolectricDummyProject.git )
私はもう試した
Robolectric.setDefaultHttpResponse(200, "my_mocked_word");
MockWebServer ( https://code.google.com/p/mockwebserver/ )
ただし、実際の URL を照会するため、テストは失敗します。
private static final String MOCKED_WORD = "MOCKED";
@Test
public void mockedRequestUsingMockServer() throws Exception {
mMockWebServer.enqueue(new MockResponse().setBody(MOCKED_WORD));
mMockWebServer.play();
Robolectric.getFakeHttpLayer().interceptHttpRequests(false);
Robolectric.getFakeHttpLayer().interceptResponseContent(false);
String result = request.loadDataFromNetwork();
assertEquals(MOCKED_WORD, result);
}
@Test
public void mockedRequestUsingRobolectric() throws Exception {
Robolectric.setDefaultHttpResponse(200, MOCKED_WORD);
String result = request.loadDataFromNetwork();
assertEquals(MOCKED_WORD, result);
}
リクエストを実行するコード
public String loadDataFromNetwork() throws Exception {
// With Uri.Builder class we can build our url is a safe manner
Uri.Builder uriBuilder = Uri.parse("http://robospice-sample.appspot.com/reverse").buildUpon();
uriBuilder.appendQueryParameter("word", word);
String url = uriBuilder.build().toString();
HttpURLConnection urlConnection = (HttpURLConnection) new URL(url)
.openConnection();
String result = IOUtils.toString(urlConnection.getInputStream());
urlConnection.disconnect();
return result;
}
おそらく関連する質問
- robolectric で HTTP リクエストをキャプチャできません(成功せずに試しました。おそらく何か不足しています)。
- Robolectric で HttpRequests をモックすることに成功した人はいますか? (私は日食を使用していません)