手动序列化Jersey响应

时间:2012-06-01 21:15:09

标签: java jersey

我有一个资源:

@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请求。

1 个答案:

答案 0 :(得分:2)

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

这将返回您传递给响应构建器的实体方法的对象。 Response对象不会序列化结果。看看以前的方法,getEntity可能会返回GenericEntity&gt;所以你想要这样的代码。

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