延迟模拟 void 方法

Mock a void method with a delay

如何模拟 void 方法并替换该方法执行的内容?我想模拟该方法,以便它执行 thread.sleep 来模拟工作。

我试过了

Mockito.doAnswer(new Answer<Void>(){
    Void answer(InvocationOnMock invocation) {
        Thread.sleep(1000);
        return null;
    }
}.when(Class).myVoidMethod((OtherClass) Mockito.any());

但它抱怨我没有正确地嘲笑它,并给我提供了使用 doException 或 thenReturn 的示例。

来自 Mockito 文档

      stubVoid(mock)
  .toAnswer(new Answer() {
                public Object answer(InvocationOnMOck invocation) {
                    Visitor v = (Visitor) invocation.getArguments()[0];
                    v.visitMock(invocation.getMock());

                    return null;
                }
            })
   .on().accept(any());

答案将被执行

http://docs.mockito.googlecode.com/hg/1.9.5/org/mockito/stubbing/VoidMethodStubbable.html