Java 理解延迟Mockito的回答

Java 理解延迟Mockito的回答,java,mockito,Java,Mockito,在mockito中使用了AnswerWithDelay,在方法调用中引入了延迟。例如: doAnswer(new AnswersWithDelay(100, new CallsRealMethods())).when(spyObject).methodName(someValue); 我几乎不怀疑这是如何工作的 让我们假设一个线程正在在线上调用。我的理解是,它只是延迟了对methodName的调用,并且在实际调用该方法之前就已经完成了等待 若上述情况属实,是否有方法调用方法,然后等待延迟,然

在mockito中使用了
AnswerWithDelay
,在方法调用中引入了延迟。例如:

doAnswer(new AnswersWithDelay(100, new CallsRealMethods())).when(spyObject).methodName(someValue);
我几乎不怀疑这是如何工作的

  • 让我们假设一个线程正在在线上调用。我的理解是,它只是延迟了对
    methodName
    的调用,并且在实际调用该方法之前就已经完成了等待
  • 若上述情况属实,是否有方法调用方法,然后等待延迟,然后调用方法代码的其余部分
请检查源代码:

@Override
public Object answer(final InvocationOnMock invocation) throws Throwable {
    TimeUnit.MILLISECONDS.sleep(sleepyTime);
    return answer.answer(invocation);
}
  • 它在给定的时间内睡觉
  • 然后返回答案
由于该类不是最终类,所以将其子类化并颠倒顺序很简单