【发布时间】:2018-02-19 18:24:32
【问题描述】:
我面临一个问题,即“Mockito.doNothing()”似乎没有按预期模拟该方法。 在下面的代码(伪代码)中,“函数 C 的执行”返回异常。 我正在尝试通过模拟 classB 及其方法来测试 FunctionA。 考虑到 functionB 已被模拟为立即返回给调用者(不执行 functionC ),我曾预计 Mockito.verify 会成功。 但是 testFunctionA() 遇到异常(由 functionC 抛出),请记住 functionC 不应该被执行(由于使用 Mockito.doNothing() 模拟了 functionB)。
如果我遗漏了什么,请告诉我吗?任何其他模拟 void 方法(立即返回)的替代方法将不胜感激。
谢谢, 万西。
public class classA {
public void functionA() {
int localA;
String localB;
B b = new B();
b.functionB(localA, localB);
}
}
public class classB {
public void functionB(int a, String b) {
functionC(a, b);
}
}
public class testClassA {
private classA objectA = new classA();
@Mock
classB objectB;
@Test
public void testFunctionA() {
Mockito.doNothing().when(objectB).functionB(Mockito.anyInt(),Mockito.anyString());
objectA.functionA();
Mockito.verify(objectB, Mockito.times(1)).functionB(Mockito.anyInt(),Mockito.anyString());
}
}
【问题讨论】:
-
为什么你认为functionC不会执行?你不是在嘲笑它……
标签: java unit-testing mockito void