是否可以调用一个方法两次,首先调用真正的实现,然后模拟结果



我正在尝试测试递归方法是否正确地重新递归。因此,第一个调用应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();
    }
}

相关内容

  • 没有找到相关文章

最新更新