У меня есть 3 класса:Mockito и вложенный вызов метода
public class SomeDAO {
// that method I'd want to catch and change
public void getObj() { ... }
}
public class MainService {
private Service2 service2;
public void doMain() {
service2.doSomethingAnother();
}
}
public class Service2 {
private SomeDAO someDAO
public void doSomethingAnother() {
someDAO.getObj();
}
}
Все, что мне нужно - для вызова Доменные но с обычаем someDao.getObj() внутри service2.doSomethingAnother():
public TestClass {
@InjectMocks
private final MainService mainService = new MainService();
@InjectMocks
private final Service2 service2 = new Service2();
@Mock
private SomeDAO someDao;
@Test
public void testMe() {
// substitution
when(someDao.getObj()).thenReturn(new MyObj());
// then I'm calling the outer method
mainService.doMain();
}
}
при выполнении этого теста у меня есть NPE в mainService.doMain(): service2 в нуль ..
Внутри testMe объект service2 is alive, а не null, он был объявлен как переменная класса и инициализирован.
Независимо от того, нарушаю ли я поведение @InjectMock?