Как потерпеть неудачу в событии waitComplete () и выдать ошибку? - PullRequest
0 голосов
/ 14 сентября 2018

Ниже приведен код моего модульного теста.Я хочу проверить условие, что генерируется бесконечное событие, и не следует ожидать завершения события.Я пытаюсь потерпеть неудачу waitComplete ().

@Test
    public void testInfiniteEventGeneration() {
        Flux<Integer> flux = serv.myEvent();  // This method generates an infinite event.

    assertThatExceptionOfType(AssertionError.class)
    .isThrownBy(() -> StepVerifier.create(flux).
            expectNextCount(1).expectNextCount(2).expectNextCount(3)
                           .expectComplete()  

// eventComplete должен потерпеть неудачу, поскольку событие генерируется в начале.

  .verify())
    .withMessageEndingWith("Event should be infinite.");

}

Нужна помощь для достижения этого.Есть ли другой лучший способ?

1 Ответ

0 голосов
/ 14 сентября 2018

Чтобы проверить, что некоторые Publisher бесконечны, теоретически вы должны подождать бесконечную продолжительность и проверить, что они не завершены.Конечно, вы не можете сделать это в тестовом наборе.

В зависимости от вашего варианта использования и поведения, которое вы хотите проверить, вы можете:

  • use функция виртуального времени для управления временем и проверки того, что Publisher отправляет много значений в течение разумного промежутка времени
  • , если событие не должно быть опубликовано, expectNoEvent(Duration) может проверить, что
  • во всех случаях вам нужно объединить свои ожидания с thenCancel(), чтобы отменить подписку и завершить тест
...