为什么Mockito的verify()方法会计算when()方法的调用次数?

3
以下测试无法通过,出现了org.mockito.exceptions.verification.TooManyActualInvocations的错误,但原因不明。
Mockito日志显示了两个调用:第一个是我期望的,第二个在setUp()方法的when()调用中。
我不记得Mockito会计算when()调用,这毫无意义。 这是否与Answers.RETURNS_DEEP_STUBS有关,还是我遗漏了其他东西?
@RunWith(MockitoJUnitRunner.class)
public class MyTest {

    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
    private FooService mockedObject;

    void setUp() {
        when(mockedObject.putParameter(any()).firstChainCall().secondChainCall()).thenReturn(HttpStatus.SC_OK);
    }

    @Test
    public void foo() throws Exception {
        runStuff();
        verify(mockedObject).putParameter(any());
    }
}
1个回答

2

由于验证API不支持深度存根,因此它将您的设置视为调用,并在第二次调用时发出警告。


我找不到支持深桩不受支持的声明的参考资料。 - undefined
1
使用深度存根,我们只能验证链中的最后一个模拟对象,而无法验证其之间的任何内容。在这里,您正在尝试验证作为定义设置的链的起始点,因此在验证中不支持此操作,因为深度存根仅用于验证链中的最后一个模拟对象。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接