Mock HttpResponse mit Robolectric

Mit Robolectric 2.3-SNAPSHOT, ich möchte zum testen ein Objekt, das werde ausführen einer Anfrage im hintergrund. Um es zu isolieren, ich versuche zu verspotten, die HttpResponse kehrte ohne Erfolg nach ein paar Stunden investiert.

Ich habe ein Projekt erstellt, dass jeder kann Klonen. Simly laufen ./gradlew überprüfen https://github.com/Maragues/RobolectricDummyProject (git clone https://github.com/Maragues/RobolectricDummyProject.git)

Habe ich versucht,

Aber die tests fehl, da Sie query die echte 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);
  }

Den code ausführen der Anfrage

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 im Zusammenhang mit Fragen

InformationsquelleAutor Maragues | 2014-02-12
Schreibe einen Kommentar