RESTeasy + Макет сервера + ExceptionMapper не найден - PullRequest
6 голосов
/ 03 мая 2011

У меня есть сценарий, где ExceptionMapper используются в JAX-RS с использованием RESTeasy 2.0.1.GA. Все отлично работает.

Теперь я хотел бы протестировать все это, используя фиктивный механизм RESTeasy . К сожалению, мой ExceptionMapper-провайдер не зарегистрирован. Чего мне не хватает?

POJOResourceFactory factory = new POJOResourceFactory(SomeWebResource.class);

Dispatcher dispatcher = MockDispatcherFactory.createDispatcher();
dispatcher.getRegistry().addResourceFactory(factory); 

MockHttpRequest request = MockHttpRequest.get("url");
MockHttpResponse response = new MockHttpResponse();

// here my exception is thrown
dispatcher.invoke(request, response);

// but I expect the response to be 404 (which works outside the mock setup)
Assert.assertEquals(response.getStatus(), 404);

Ответы [ 2 ]

12 голосов
/ 05 мая 2011

Хорошо, я нашел решение.Необходимо зарегистрировать ExceptionMapper вручную:

dispatcher.getProviderFactory().addExceptionMapper(SomeExceptionMapper.class);
1 голос
/ 07 июня 2018

После нескольких дней борьбы с этой проблемой, я думаю, что стоит упомянуть, что @Joe W написал в комментарии к ответу выше, как его собственный ответ:

"Примечание: видимость addExceptionMapper() была изменена на защищенную в более поздних версиях. dispatcher.getProviderFactory().registerProvider(SomeExceptionMapper.class) работает вместо этого."

...