单元测试- RESTeasy + Server mock + ExceptionMapper未找到



我有一个使用RESTeasy 2.0.1在JAX-RS中使用ExceptionMapper的场景。GA。

我现在想使用RESTeasy的模拟机制来测试整个事情。不幸的是,我的ExceptionMapper-provider没有注册。我错过了什么?

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);

好了,我找到解决方案了。需要手动注册ExceptionMapper:

dispatcher.getProviderFactory().addExceptionMapper(SomeExceptionMapper.class);

在与这个问题斗争了几天之后,我认为值得一提的是@Joe W在上面答案的评论中所写的作为它自己的答案:

"注意:addExceptionMapper()的可见性在以后的版本中被更改为protected。dispatcher.getProviderFactory().registerProvider(SomeExceptionMapper.class)可以代替。"

最新更新