Я пытаюсь частично смоделировать пружинный бин, чтобы Spy
@ActiveProfiles(profiles = {Profiles.TEST})
public class ServiceTestMockito {
@Autowired
private ServiceBean serviceBean;
@Autowired
private DAO dao;
@Test
public void testSpy() {
ServiceBean serviceBeanSpy = Mockito.spy(serviceBean);
doReturn(true).when(serviceBeanSpy).methodB(Mockito.any());
Assert.isTrue(serviceBeanSpy.methodA(new Employee()), "This should be true");
}
}
public class ServiceBean {
public Boolean methodB(Employee employee) {
return false;
}
public Boolean methodA(Employee employee){
return methodB(employee);
}
}
издевался только над одним из методов, вызываемых в другом методе. Я использовал отладчик, чтобы проверить, является ли serviceBean экземпляром, отличным отserverBeanSpy, но оказывается, что они одинаковы.Я не уверен, что мне здесь не хватает
Я ссылался на следующие вопросы, но все, кажется, находят проблему с тем, как макет объявляется / вызывается, но я придерживаюсь формата, упомянутого в вопросах / форумах ниже:
Вопрос_1
Mockito_Docs
Вопрос_2
Вопрос_3
Поэтому, когда я запускаю тест, утверждение всегда завершается неудачей, потому что шпион не работает, и я получаю реальное ложное значение, возвращенное методом methodB
Я даже перешагнул отладчик на methodBи я вижу, как это выполняется.Я считаю, что methodB не должен был вызываться вообще.