Jersey 测试 - ExceptionMapper 未被调用
Jersey test - ExceptionMapper is not invoked
我有 REST Web 服务,我使用 Jersey Test、Mockito、Junit 对其进行了测试。当 web 服务方法成功执行时,我得到正确的响应。如果数据无效,则抛出自定义异常,必须由 ExceptionMapper 处理。它应该 return 相同的结构响应但具有不同的代码。 ExceptionMapper 在非测试环境中运行良好。但是,在测试执行日志显示之后:
1 < 500
1 < Connection: close
1 < Content-Length: 1033
1 < Content-Type: text/html;charset=ISO-8859-1
1 < Date: Wed, 30 Mar 2016 11:55:37 GMT
javax.ws.rs.InternalServerErrorException: HTTP 500 Request failed.
at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:1020)
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:816)
at org.glassfish.jersey.client.JerseyInvocation.access0(JerseyInvocation.java:92)
我使用:
<dependency>
<groupId>org.glassfish.jersey.test-framework.providers</groupId>
<artifactId>jersey-test-framework-provider-grizzly2</artifactId>
<version>2.22.2</version>
</dependency>
通过测试扩展的模拟服务的缩短版本 类:
public class MockedService extends JerseyTest {
@Override
public ResourceConfig configure() {
forceSet(TestProperties.CONTAINER_PORT, "8080");
enable(TestProperties.LOG_TRAFFIC);
return new ResourceConfig().register(new Service());
}
}
如何从 ExceptionMapper 获取响应?
您还需要注册ExceptionMapper
return new ResourceConfig()
.register(new Service())
.register(new YourMapper());
在您的真实环境中,可能会通过包扫描或类路径扫描来扫描映射器。
我有 REST Web 服务,我使用 Jersey Test、Mockito、Junit 对其进行了测试。当 web 服务方法成功执行时,我得到正确的响应。如果数据无效,则抛出自定义异常,必须由 ExceptionMapper 处理。它应该 return 相同的结构响应但具有不同的代码。 ExceptionMapper 在非测试环境中运行良好。但是,在测试执行日志显示之后:
1 < 500
1 < Connection: close
1 < Content-Length: 1033
1 < Content-Type: text/html;charset=ISO-8859-1
1 < Date: Wed, 30 Mar 2016 11:55:37 GMT
javax.ws.rs.InternalServerErrorException: HTTP 500 Request failed.
at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:1020)
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:816)
at org.glassfish.jersey.client.JerseyInvocation.access0(JerseyInvocation.java:92)
我使用:
<dependency>
<groupId>org.glassfish.jersey.test-framework.providers</groupId>
<artifactId>jersey-test-framework-provider-grizzly2</artifactId>
<version>2.22.2</version>
</dependency>
通过测试扩展的模拟服务的缩短版本 类:
public class MockedService extends JerseyTest {
@Override
public ResourceConfig configure() {
forceSet(TestProperties.CONTAINER_PORT, "8080");
enable(TestProperties.LOG_TRAFFIC);
return new ResourceConfig().register(new Service());
}
}
如何从 ExceptionMapper 获取响应?
您还需要注册ExceptionMapper
return new ResourceConfig()
.register(new Service())
.register(new YourMapper());
在您的真实环境中,可能会通过包扫描或类路径扫描来扫描映射器。