【问题标题】:How to define AnswersWithDelay for a void returning method如何为 void 返回方法定义 AnswersWithDelay
【发布时间】:2019-12-20 13:33:02
【问题描述】:

所以,我想在 Mockito 中模拟一种方法,该方法正在进行网络调用并等待它完成后再返回。我在这里找到了这个不错的答案:https://stackoverflow.com/a/50530261/4433222,建议使用AnswersWithDelay

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

【问题讨论】:

标签: java unit-testing mockito


【解决方案1】:

首先,AnswersWithDelay 是 Mockito 的一个内部类。所以你不应该直接使用它。这个类的实例应该是使用公共AdditionalAnswers类中的工厂方法创建的。

所以你只需要

doAnswer(AdditionalAnswers.answersWithDelay(delay, invocation -> null)).when(mockObject).doSomething();

【讨论】:

  • 注意:delay 这里是毫秒而不是秒。我学得很辛苦,
【解决方案2】:

基于this 的答案,带有草稿测试类。

@ExtendWith(SpringExtension.class)
public class MockDelayVoidTest {
    
    @MockBean
    private Object myMock;

    void test(){
        Mockito.doAnswer(AdditionalAnswers.answersWithDelay(1000, invocationOnMock -> {
            //here you can customize the behavior of your mock method
            return null;}))
                .when(myMock).toString();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 2019-10-05
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多