Jersey测试 - 不调用ExceptionMapper

Jus*_*tas 2 junit jersey mockito exceptionmapper jersey-test-framework

我有REST网络服务,我用Jersey Test,Mockito,Junit测试.成功执行Web服务方法后,我得到正确的响应.如果数据无效,则抛出自定义异常,必须由ExceptionMapper处理.它应该返回相同的结构响应,但具有不同的代码.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.access$700(JerseyInvocation.java:92)
Run Code Online (Sandbox Code Playgroud)

我用:

<dependency>
    <groupId>org.glassfish.jersey.test-framework.providers</groupId>
    <artifactId>jersey-test-framework-provider-grizzly2</artifactId>
    <version>2.22.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

缩短版的模拟服务,由测试类扩展:

public class MockedService extends JerseyTest {

    @Override
    public ResourceConfig configure() {

        forceSet(TestProperties.CONTAINER_PORT, "8080");
        enable(TestProperties.LOG_TRAFFIC);

        return new ResourceConfig().register(new Service());
    }
}
Run Code Online (Sandbox Code Playgroud)

如何从ExceptionMapper获取响应?

Pau*_*tha 5

你还需要注册 ExceptionMapper

return new ResourceConfig()
        .register(new Service())
        .register(new YourMapper());
Run Code Online (Sandbox Code Playgroud)

在您真实的环境中,可能会使用包扫描或类路径扫描来扫描映射器.