Tengo un recurso de Jersey que deseo probar con JUnit. El recurso utiliza proveedores Guice para inyectar ciertos campos:Pruebas unitarias Recursos de Jersey con campos inyectados de Guice
@Path("/example/")
class ExampleResource {
@Inject
Provider<ExampleActionHandler> getMyExampleActionHandlerProvider;
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<ExamplePojo> getExampleList() {
ExampleActionHandler handler = getMyExampleActionHandlerProvider.get();
handler.doSomething();
...
Todo esto funciona muy bien cuando se utiliza un servidor real al servicio de la API, sin embargo probando es problemático.
Mi clase de pruebas que actualmente se ve algo como:
public class ApiTest extends JerseyTest {
public ApiTest() throws Exception {
super();
ApplicationDescriptor appDescriptor = new ApplicationDescriptor();
appDescriptor.setContextPath("/api");
appDescriptor.setRootResourcePackageName("com.my.package.name");
super.setupTestEnvironment(appDescriptor);
}
@Test
public void testHelloWorld() throws Exception {
String responseMsg = webResource.path("example/").get(String.class);
Assert.assertEquals("{}", responseMsg);
}
}
Claramente, Guice no está recibiendo la oportunidad de inicializar los campos de ExampleResource
para que la llamada handler.doSomething()
no da lugar a una NullPointerException.
¿Hay alguna manera de decirle a Jersey que cree una instancia de la clase ExampleResource con Guice para que el proveedor funcione?
Sé que esto es un poco tarde, pero por si acaso todavía estás viendo esto, lo que acabaste haciendo arriba? – talon8
@minichate ¿conseguiste que esto funcionara? –