我可以使用 Mockito 延迟存根方法响应吗?
我现在正在编写单元测试。我需要使用 Mockito 模拟长期运行方法,以测试我的实现的超时处理。使用Mockito可能吗?
像这样:
when(mockedService.doSomething(a, b)).thenReturn(c).after(5000L);
我现在正在编写单元测试。我需要使用 Mockito 模拟长期运行方法,以测试我的实现的超时处理。使用Mockito可能吗?
像这样:
when(mockedService.doSomething(a, b)).thenReturn(c).after(5000L);
您可以简单地将线程置于所需时间的睡眠状态。请注意 - 这样的事情确实会减慢您的自动化测试执行速度,因此您可能希望将这些测试隔离在单独的套件中
它看起来像这样:
when(mock.load("a")).thenAnswer(new Answer<String>() {
@Override
public String answer(InvocationOnMock invocation){
Thread.sleep(5000);
return "ABCD1234";
}
});
从 mockito 2.8.44 开始,org.mockito.internal.stubbing.answers.AnswersWithDelay 可用于此目的。下面是一个示例用法
doAnswer( new AnswersWithDelay( 1000, new Returns("some-return-value")) ).when(myMock).myMockMethod();