Mock HttpResponse mit Robolectric

Mit Robolectric 2.3-SNAPSHOT möchte ich ein Objekt testen, das eine Anforderung im Hintergrund ausführt. Um es zu isolieren, versuche ich, die zurückgegebene HttpResponse zu verspotten, ohne Erfolg, nachdem einige Stunden investiert wurden.

Ich habe ein Projekt erstellt, das jeder klonen kann. Einfach laufen./gradlew überprüfen https://github.com/Maragues/RobolectricDummyProject (Git-Klonhttps://github.com/Maragues/RobolectricDummyProject.git)

ich habe es versucht

Robolectric.setDefaultHttpResponse (200, "my_mocked_word");

MockWebServer (https://code.google.com/p/mockwebserver/)

Die Tests schlagen jedoch fehl, da die tatsächliche URL abgefragt wird

  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);
  }

Der Code, der die Anforderung ausführt

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;
  }

Möglicherweise verwandte Fragen

HTTP-Anfrage kann nicht mit robolectric erfasst werden (Ich habe das ohne Erfolg versucht. Vielleicht fehlt mir etwas)Hat jemand Erfolg gehabt, HttpRequests mit Robolectric zu verspotten? (Ich benutze keine Eclipse)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage