2012-06-01 96 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