2011-05-03 95 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