2017-07-07 2 views
0

Ich habe WebService Aufruf mit Java Http Client. Sie müssen Junit-Tests mit Mockito für die Antwort von WebService (HttpResponse) durchführen.Wie Mock HttpResponse für den Web Service (mit JavaHttpClient) Mock?

Gson gson = new Gson(); 
HttpResponse httpResponse= JavaHttpClient.callWebService("URL",object); 
String json = EntityUtils.toString(httpResponse.getEntity()); 
response = gson.fromJson(json, ClassName.class); 
log.info("Response: " + new Gson().toJson(response)); 

Wie setzt man die Mock-Werte für httpResponse.getEntity()? und dies sollte als JSON konvertieren werden über

Dank Nithyanandan K

+0

Ist 'JavaHttpClient' statisch? Wenn ja, wäre es in mockito nicht möglich, aber in PowerMock möglich. – Compass

+0

, dass ich durch die Erstellung der Schnittstelle geändert habe. Ich möchte gerne die response.getentity() Werte vortäuschen. –

+0

Sie können dann die Schnittstelle überspionieren, eine HttpResponse erstellen und sie mit Dummy-Daten füllen, und dann diese durch den Interface-Mock zurückgeben. – Compass

Antwort

0

Hier einige Beispiel MockServer. Ändern Sie es für Ihre Anforderung.

import static org.mockserver.integration.ClientAndServer.startClientAndServer; 
import static org.mockserver.model.HttpRequest.request; 
import static org.mockserver.model.HttpResponse.response; 

import org.mockserver.client.server.MockServerClient; 
import org.mockserver.initialize.ExpectationInitializer; 
import org.mockserver.model.Header; 
import org.mockserver.model.HttpStatusCode; 

public class MockServerInitializer implements ExpectationInitializer { 

    /** 
    * Standalone mock server 
    * 
    * @param args 
    */ 
    public static void main(String[] args) { 
    MockServerClient mockServerClient = startClientAndServer(9999); 
    defineMockServerBehaviour(mockServerClient); 
    } 

    @Override 
    public void initializeExpectations(MockServerClient mockServerClient) { 
    defineMockServerBehaviour(mockServerClient); 
    } 

    public static void defineMockServerBehaviour(MockServerClient mockServer) { 

    mockServer.when(
     request() 
     .withMethod("POST") 
     .withPath("/Sample") 
    ).respond(
     response() 
     .withStatusCode(HttpStatusCode.OK_200.code()) 
     .withHeader(Header.header("Content-Type", "application/xml")) 
     .withBody("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" + 
      "<Response>\n" + 
      " <responseStatus>OK</responseStatus>\n" + 
      "</Response>")); 
    } 
}