Как протестировать метод, который повторяет попытку в Uni?JAVA

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

Сообщение Anonymous »

Я использую Quarkus, RESTEasy и Mutiny.
У меня есть метод, который вызывает клиент REST и повторяет попытки в случае сбоя.

Код: Выделить всё

class MyService {
private MyRestClient restClient;

public Uni fetchData() {
return restClient.fetchData()
.onFailure().retry().withBackOff(Duration.ofMillis(100), Duration.ofSeconds(5))
.atMost(5);
}
}
Я хочу проверить правильность повторных попыток, поэтому я написал этот тест:

Код: Выделить всё

@Test
public void shouldRetry() {
Mockito.when(restClient.fetchData())
.thenReturn(
Uni.createFrom().failure(new RuntimeException("Failed to fetch data")),
Uni.createFrom().item(Response.ok().build())
);

assertDoesNotThrow(() -> myService.fetchData().await().indefinetely());

Mockito.verify(restClient, Mockito.times(2)).fetchData();
}
Однако тест не пройден по утверждению «не выдает». Метод повторяет попытку правильно, но я считаю, что он не запускает новый вызов fetchData. Похоже, что он работает с тем же Uni, который был высмеян, чтобы вернуть исключение, вместо того, чтобы получить новый, который должен возвращать ответ OK. Таким образом, он постоянно получает ошибку. Либо это, либо я неправильно использую Mockito.
Он продолжает повторять попытки до пятой попытки, когда выдает IllegalStateException:

Код: Выделить всё

Suppressed: java.lang.IllegalStateException: Retries exhausted: 5/5
Кто-нибудь знает, как мне исправить этот тест, чтобы получить правильный результат? Или, может быть, проблема кроется в самом тестируемом коде?

Подробнее здесь: https://stackoverflow.com/questions/770 ... -on-an-uni
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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