相关疑难解决方法(0)

在Mockito中调用真实方法,但拦截结果

简化一下,我们的系统有两个部分."我们的"部分,反过来使用由另一个团队(在相同的代码库中)实现的较低级别部分.我们有一个相当复杂的功能测试设置,我们将入口点包装在间谍对象的较低层.在积极的测试中,我们使用该级别的实际实现,但是我们模拟了应该因某些预定义错误而失败的调用.

现在我正在尝试添加对更复杂场景的支持,我想为基础级别的调用添加一个人工延迟(显然是假的时钟).为此,我想定义一个模拟,它将(1)调用实际实现(2)获取返回的结果Future对象,并将其与自定义函数相结合,该函数将相应地注入延迟.所以理想情况下我希望有类似的东西:

doAnswer(invocationOnMock -> 
    { 
      result = call real method on mySpy; 
      return Futures.combile(result, myFunction);
    }).when(mySpy).myMethod();
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现它?

java mockito java-8

5
推荐指数
1
解决办法
2712
查看次数

我可以使用Mockito插入延迟然后调用真正的方法吗?

好的,我有一些测试代码,我想在调用特定方法时插入一个短延迟(模拟网络干扰等).

示例代码:

MyObject foobar = Mockito.spy(new MyObject(param1, param2, param3));
Mockito.doAnswer(e -> {
    Thread.sleep(2000);
    foobar.myRealMethodName();
    return null;
}).when(foobar).myRealMethodName();
Run Code Online (Sandbox Code Playgroud)

或类似的东西.基本上,每当myRealMethodName()被调用时,我想要一个2秒的延迟,然后调用实际的方法.

java mockito

4
推荐指数
2
解决办法
4058
查看次数

如何为 void 返回方法定义 AnswersWithDelay

因此,我想在 Mockito 中模仿一种正在进行网络调用并等待其完成然后返回的方法。我在这里找到了这个很好的答案:/sf/answers/3537118301/建议使用AnswersWithDelay.

问题是,我很难为返回 void 的方法定义方法的行为。AnswersWithDelays构造函数需要一个类型的参数Answer<Object>,但我无法找到如何将其设置为 void。有什么线索吗?

java unit-testing mockito

2
推荐指数
1
解决办法
4034
查看次数

标签 统计

java ×3

mockito ×3

java-8 ×1

unit-testing ×1