我打算部分模拟一个Spring bean,以便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不同,但事实证明它们是相同的。我不确定我在这里想念什么
我确实提到了以下问题,但是每个人似乎都发现了模拟声明/调用方式的问题,但是我遵循以下问题/论坛中提到的格式:
因此,当我运行测试时,断言始终会失败,因为间谍无法正常工作,并且我从methodB返回了实际的错误
我什至将调试器移到methodB上,并且看到它正在执行。我相信根本不应该调用methodB。