Попытка протестировать довольно простую конечную точку JAX-RS
@ApplicationScoped
@Path("mypath")
public class MyRestService {
@Inject
private Logger logger;
@Inject
private EjbService ejbService;
@GET
public String myMethod() {
logger.info("...");
return ejbService.myMethod();
}
}
с тестом Мокито и Джерси
@RunWith(MockitoJUnitRunner.class)
public class MyRestServiceTest extends JerseyTest {
@Mock
private EjbService ejbService;
@Mock
private Logger logger;
@InjectMocks
private MyRestService myRestService;
...
@Override
protected Application configure() {
MockitoAnnotations.initMocks(this);
return new ResourceConfig().register(myRestService);
}
}
Контейнер Grizzly возвращает org.glassfish.hk2.api.UnsatisfiedDependencyException
для Logger
и EjbService
даже при том, что зависимости корректно введены Mockito.
Кажется, Гризли пытается, правильно, оверрайдить макеты Mockito.
Если я регистрирую AbstractBinder
в методе configure
, все работает нормально.
.register(new AbstractBinder() {
@Override
protected void configure() {
bind(ejbService).to(EjbService.class);
bind(logger).to(Logger.class);
}
});
Но я не чувствую, что это лучший способ сделать инъекцию. Стиль Мокито лучше имхо.
Что мне нужно сделать, чтобы решить эту проблему?