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
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());