Тест на Джерси - ExceptionMapper не вызывается

У меня есть веб-сервис REST, который я тестирую с помощью Jersey Test, Mockito, Junit. Когда метод веб-службы выполняется успешно, я получаю правильный ответ. В случае неверных данных выдается пользовательское исключение, которое должно обрабатываться 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)

Я использую:

<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?

1 ответ

Решение

Вам все еще нужно зарегистрировать ExceptionMapper

return new ResourceConfig()
        .register(new Service())
        .register(new YourMapper());

В вашей реальной среде, возможно, сканируется маппер, с помощью сканирования пакетов или сканирования пути к классам.

Другие вопросы по тегам