2012-06-01 153 views
0

我有一個資源:手動序列化新澤西響應

@Path("/") 
public class Resource { 

    @GET 
    public Response getResponse() { 
     //.. 
     final GenericEntity<List<BusinessObject>> entity = new GenericEntity<List<BusinessObject>>(businessobjects) { }; 
     return Response.status(httpResultCode).entity(entity).build(); 
    } 

} 

我想單元測試,而無需使用Jersey客戶端這種方法,但我不知道怎麼去Response對象的身體。我看不到有效的方法。這裏的測試方法:

@Test 
public void testMethod() { 
    Resource resourceUnderTest = new Resource(); 
    Response response = resourceUnderTest.getResponse(); 
    List<BusinessObject> result = ???; 
} 

我能得到我想要的結果,如果我去雖然Jersey客戶端,但我寧願只需要直接調用該方法不作任何HTTP請求。

回答

2
List<BusinessObject> result = (List<BusinessObject>)response.getEntity(); 

這會將您傳入的對象返回到響應構建器的實體方法。 Response對象不會序列化結果。看看前面的方法,getEntity可能會返回GenericEntity>,所以你需要這樣的代碼。

GenericEntity<List<BusinessObject>> result = (GenericEntity<List<BusinessObject>>)response.getEntity(); 
+0

太好了!這很好。 :)對不起,延遲,我不能嘗試,直到今天。 – Oleksi