我正在尝试测试递归方法是否正确地重新递归。因此,第一个调用应callRealMethod
。但是第二个调用只是为了验证它是否被调用,并且不应该实际进行调用,而是应该返回一个存根结果。
有什么办法可以在莫比托做到这一点吗?
你可以简单地使用 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();
}
}