2017-03-16 1 views
0

Ich habe eine Ressource Methode, die einen Streaming-Download produziert:Wie kann ich den Streaming-Download per Jersey/DropWizard testen?

@GET 
@Path("/{assetId}") 
@Produces(MediaType.APPLICATION_OCTET_STREAM) 
public Response download(@PathParam("assetId") String assetId) { 
    StreamingOutput stream = os -> service.download(assetId, os); 
    return Response.ok(stream).build(); 
} 

ich dies mit einem Mock-Service-Objekt Unit-Test will. Ich habe bereits:

private static AssetsService service = Mockito.mock(AssetsService.class); 

@ClassRule 
public final static ResourceTestRule resource = ResourceTestRule.builder() 
    .addResource(new AssetsResource(service)) 
    .addProvider(MultiPartFeature.class) 
    .build(); 


@Test 
public void testDownload() { 
    reset(service); 
    // how to get an output stream from this? 
    resource.client().target("/assets/123").request().get(); 
} 

Per meinem Kommentar im Test, was muß ich tun, um einen Output aus der Antwort zu bekommen? Ich finde die Jersey-Client-API ziemlich verwirrend.

Sobald ich dies habe, stoppe ich den Service-Aufruf, so dass es eine bekannte Datei schreibt, und testen, dass es richtig empfangen wird.

Antwort

1

Versuchen Sie folgendes:

Response response = resource.client().target("/assets/123").request().get(); 

InputStream is = response.readEntity(InputStream.class); 
Verwandte Themen