我正在尝试测试递归方法是否正确地递归.
因此,第一个调用应调用RealMethod.但是第二个调用只是为了验证它是否已被调用,并且不应实际进行调用,而应返回存根结果.
有什么办法可以在Mockito中做到这一点?
解决方法:
您可以简单地使用thenCallRealMethod,然后使用常规的thenReturn存根:
import org.junit.Test;
import static org.mockito.Mockito.*;
public class PartialMock {
String doIt() {
return "original";
}
@Test
public void testDoIt() {
PartialMock t = mock(PartialMock.class);
when(t.doIt())
.thenCallRealMethod()
.thenReturn("mocked");
assertEquals("original", t.doIt());
assertEquals("mocked", t.doIt());
assertEquals("mocked", t.doIt());
verify(t, times(3)).doIt();
}
}