你不能像这样测试。你在这里做什么
Response response = Response.status(Response.Status.OK) .entity(entity) .type(MediaType.APPLICATION_JSON).build();
正在建立 出站 响应。在JAX-RS框架中,发出响应后,例如
@GET@Produced(MediaType.APPLICATION_JSON)public Response getResponse() { ... return Response.status(Response.Status.OK) .entity(entity) .type(MediaType.APPLICATION_JSON).build();}
它仍然需要通过
MessageBodyWriter序列化到JSON。
- 阅读有关实体提供者的更多信息
话虽如此,泽西岛有一个测试框架,我们可以用来测试我们的资源方法。您可以在Github上找到所有官方示例
一个样本(有一些改动):
这些是最低要求的Maven依赖项
<dependencies> <dependency> <groupId>org.glassfish.jersey.test-framework</groupId> <artifactId>jersey-test-framework-core</artifactId> <version>2.13</version> </dependency> <dependency> <groupId>org.glassfish.jersey.test-framework.providers</groupId> <artifactId>jersey-test-framework-provider-grizzly2</artifactId> <version>2.13</version> </dependency> <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>2.13</version> </dependency></dependencies>
测试班
public class TestJSonResource extends JerseyTest { @Override protected TestContainerFactory getTestContainerFactory() { return new GrizzlyTestContainerFactory(); } @Path("test") public static class TestResource { @GET @Produces(MediaType.APPLICATION_JSON) public Response getJson() { Map<String, String> entity = Maps.newHashMap(); entity.put("foo", "bar"); Response response = Response.status(Response.Status.OK) .entity(entity) .type(MediaType.APPLICATION_JSON).build(); return response; } } @Override protected DeploymentContext configureDeployment() { return DeploymentContext.builder(new ResourceConfig(TestResource.class)) .contextPath("context1/context2") .build(); } @Test public void testGet() { final WebTarget target = target("test"); final String s = target.request().get(String.class); System.out.println(s); }}
jersey-media-json-jackson提供
MessageBodyWriter和
MessageBodyReader用于处理JSON,这对我们是隐式注册的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)