同一类中的模拟方法
2022-08-31 22:07:50
我正在使用Mockito来模拟我正在编写测试的同一类中的方法。我已经看到了SO(同一类中的嘲笑方法)的其他答案,但可能我误解了它们,因为我遇到了问题。
class Temp() {
public boolean methodA(String param) {
try {
if(methodB(param))
return true;
return false;
} catch (Exception e) {
e.printStackTrace();
}
}
}
我的测试方法:
@Test
public void testMethodA() {
Temp temp = new Temp();
Temp spyTemp = Mockito.spy(temp);
Mockito.doReturn(true).when(spyTemp).methodB(Mockito.any());
boolean status = temp.methodA("XYZ");
Assert.assertEquals(true, status);
}
但是,我打印出期望,因为执行了方法B的定义。我的理解是,使用spyTemp会嘲笑methodB的定义。然而,情况似乎并非如此。
有人可以解释一下我哪里错了吗?