2011-05-03 115 views
5

我有一个场景,其中ExceptionMapper在JAX-RS中使用RESTeasy 2.0.1.GA。这工作都很好。RESTeasy +服务器模拟+ ExceptionMapper未找到

我现在想用RESTeasy的mock mechanism来测试整个事情。不幸的是我的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); 

回答

10

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

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

注意:在更高版本中,addExceptionMapper()的可见性已更改为protected。 dispatcher.getProviderFactory()。registerProvider(SomeExceptionMapper.class)改为工作。 – 2015-06-12 16:17:27