2011-05-03 21 views
5

Tengo un escenario en el que se utiliza ExceptionMapper en JAX-RS utilizando RESTeasy 2.0.1.GA. Esto funciona todo bien.RESTeasy + Server mock + ExceptionMapper no encontrado

Ahora me gustaría probar todo usando RESTeasy's mock mechanism. Desafortunadamente, mi proveedor de ExceptionMapper no está registrado. ¿Qué me estoy perdiendo?

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

Respuesta

10

Bien, encontré la solución. Necesario para registrar ExceptionMapper manualmente:

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

Nota: La visibilidad de addExceptionMapper() se cambió a protegida en versiones posteriores. dispatcher.getProviderFactory(). registerProvider (SomeExceptionMapper.class) funciona en su lugar. –