我试图测试一个递归方法正确地重新curses。
因此,第一次通话应callRealMethod
。但第二个调用只是为了验证它是否被调用,并且实际上不应该进行调用,而是应该返回一个存根结果。
Mockito有没有办法做到这一点?
答案 0 :(得分:3)
您只需使用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();
}
}