java-是否可以两次调用一个方法,首先调用实际实现,然后模拟结果?

我正在尝试测试递归方法是否正确地递归.
因此,第一个调用应调用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();
    }
}
上一篇:android-模拟改造可观察到的错误


下一篇:java-Spring:对具有字段和构造函数注入的类进行单元测试