1

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

ответ

4

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

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

в вас реальную среду, картограф, вероятно, проверяется на наличие, либо при сканировании пакета или сканирования пути к классам.