23

我正在测试一个 void 方法,它碰巧在一个类中调用了其他几个 void 方法(所有这些方法都在同一个类中)。该方法是沿着这些思路...

public void methodToTest() {
   methodA();
   methodB();
}

void methodA() {
   methodA1();
   methodA2();
   methodA3();
}

我想做的是让methodA()上面什么都不做。也就是说,我想methodA()基本上是这样的:

void methodA() { }

我都试过了,doThrow()但无济于事。就好像这两个都被完全忽略了。doAnswer()methodA()

我尝试过的一个例子......

doThrow(new RuntimeException()).when(mockedClass).methodA();

有没有办法只使用 Mockito 来做到这一点?我无权更改正在修改的课程。

4

2 回答 2

30

如果您希望 methodB 仍然执行,而 methodA 什么都不做。这将做到这一点:

TestClass spy = spy(new TestClass());
doNothing().when(spy).methodA();
spy.methodToTest(); 
于 2012-10-31T18:57:08.743 回答
2
 @Mock
 ApplicationClass applicationClass; 


 Mockito.doNothing().when(applicationClass).myMethod(Matchers.any(Object.class));
于 2018-07-23T09:09:58.873 回答