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.