Can I delay a stubbed method response with Mockito?

后端 未结 4 1538
执笔经年
执笔经年 2020-12-07 17:21

I\'m writing unit tests now. I need to simulate long-run method with Mockito to test my implementation\'s timeout handling. Is it possible with Mockito?

Something li

4条回答
  •  -上瘾入骨i
    2020-12-07 18:09

    I created a utils for this:

    import java.time.Duration;
    import java.util.concurrent.TimeUnit;
    
    import static org.mockito.Mockito.doAnswer;
    
    public class Stubber {
    
        public static org.mockito.stubbing.Stubber doSleep(Duration timeUnit) {
            return doAnswer(invocationOnMock -> {
                TimeUnit.MILLISECONDS.sleep(timeUnit.toMillis());
                return null;
            });
        }
    
        public static  org.mockito.stubbing.Stubber doSleep(Duration timeUnit, E ret) {
            return doAnswer(invocationOnMock -> {
                TimeUnit.MILLISECONDS.sleep(timeUnit.toMillis());
                return ret;
            });
        }
    
    }
    

    and in your test case simply use:

    doSleep(Duration.ofSeconds(3)).when(mock).method(anyObject());
    

提交回复
热议问题