2017-03-16 58 views
0

我有其產生的流媒體下載資源的方法:我想單元測試這與模擬服務對象如何使用澤西/ dropwizard單元測試流式下載?

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

。我已經有:

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

根據我在測試中的評論,我需要做什麼才能從響應中獲得輸出流?我發現球衣客戶端API很混亂。

一旦我有了這個,我會存根服務調用,以便它寫一個已知的文件,並測試它是否正確接收。

回答

1

試試這個:

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

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