我可以使用 Mockito 延迟存根方法响应吗?

新手上路,请多包涵

我现在正在编写单元测试。我需要使用 Mockito 模拟长期运行的方法来测试我的实现的超时处理。 Mockito 有可能吗?

是这样的:

 when(mockedService.doSomething(a, b)).thenReturn(c).after(5000L);

原文由 user961548 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

您可以简单地让线程休眠所需的时间。当心 - 这些事情确实会减慢您的自动化测试执行速度,因此您可能希望将此类测试隔离在一个单独的套件中

它看起来类似于:

 when(mock.load("a")).thenAnswer(new Answer<String>() {
   @Override
   public String answer(InvocationOnMock invocation){
     Thread.sleep(5000);
     return "ABCD1234";
   }
});

原文由 K.L. 发布,翻译遵循 CC BY-SA 3.0 许可协议

从 mockito 2.8.44 开始, org.mockito.internal.stubbing.answers.AnswersWithDelay 可用于此目的。这是一个示例用法

 doAnswer( new AnswersWithDelay( 1000,  new Returns("some-return-value")) ).when(myMock).myMockMethod();

原文由 Viswanath 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题