我想验证当运行方法A时,我的代码通过方法B运行(1次),如下所示
public class ClassA {
@Inject
@Named("executor")
ExecutionContextExecutor eventHandlerExecutor;
public Object methodA (Object x, Object y) {
...
CompletableFuture.runAsync(() -> methodB(i, j), eventHandlerExecutor);
...
}
public void methodB (Object n, Object m) {
...
}
}
我应该如何为此编写单元测试?
classA.methodA(x, y);
// should I spy classA?
verify(classA, times(1)).methodB(any(), any());
是的。您可以监视要测试的
ClassA
实例。间谍的好处是它允许您测试真实的东西,但同时可以让您验证其上的某些方法是否真正执行。
喜欢的东西:
@Test
void test(){
ClassA sut = new ClassA(xxx);
sut = spy(sut);
sut.methodA(aaa,bbb);
verify(sut, times(1)).methodB(eq(aaa), eq(bbb));
}