Модульное тестирование потока, который повторяетсяJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Модульное тестирование потока, который повторяется

Сообщение Anonymous »

Я написал поток, который вызывает foobarMethod, потенциально вызывая моноисключение SocketTimeoutException. Я хочу, чтобы этот метод повторился 2 раза. Вручную этот код работает, но в тесте Junit я не могу повторить его попытку. Это из-за проблемы среды с модульными тестами или я не ошибаюсь в тестах? Любая помощь принимается с благодарностью. Спасибо.
public void foobarServiceMethod() {
foobarClient.foobarMethod(foobarParameter)
.onErrorMap(ex -> {
log.error("Code has failed");
if (ex instanceof SocketTimeoutException) {
return new SocketTimeoutException("");
} else {
return ex;
}
})
.retryWhen(
Retry.fixedDelay(3, Duration.ofSeconds(1))
.filter(SocketTimeoutException.class::isInstance))
.subscribe(foobarResponse -> handleFoobarResoponse(foobarResponse));

@Test
void foobarRest(CapturedOutput capturedOutput) throws SocketTimeoutException, InterruptedException {
foobarParameter = "test";
when(foobarClient.foobarMethod(any()))
.thenReturn(Mono.error(new SocketTimeoutException("First timeout")))
.thenReturn(Mono.error(new SocketTimeoutException("First timeout")));

foobarMethod(foobarParameter);

assertEquals(2, capturedOutputSplit.contains("Code has failed");
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... ng-retried
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»