return toSubscriber().verify(duration);
return toSubscriber().verify(duration);
@Override public Assertions verifyThenAssertThat(Duration duration) { HookRecorder stepRecorder = new HookRecorder(); stepRecorder.plugHooks(parent.options); try { //trigger the verify Duration time = verify(duration); //return the assertion API return new DefaultStepVerifierAssertions(stepRecorder, time, parent.errorFormatter); } finally { stepRecorder.unplugHooks(); } }
final DefaultStepVerifier<T> build() { return new DefaultStepVerifier<>(this); }
@Override public Duration verify() { return verify(defaultVerifyTimeout); }
@Override public Duration verifyError() { return expectError().verify(); }
@Override public Assertions verifyThenAssertThat() { return verifyThenAssertThat(defaultVerifyTimeout); }
@Override public Duration verifyErrorMatches(Predicate<Throwable> predicate) { return expectErrorMatches(predicate).verify(); }
@Override public Duration verifyErrorMessage(String errorMessage) { return expectErrorMessage(errorMessage).verify(); }
@Override public Duration verifyErrorSatisfies(Consumer<Throwable> assertionConsumer) { return consumeErrorWith(assertionConsumer, "verifyErrorSatisfies", true).verify(); }
@Override public Duration verifyError(Class<? extends Throwable> clazz) { return expectError(clazz).verify(); }
@Override public Duration verifyComplete() { return expectComplete().verify(); }
@Test(timeout = 4000) public void manuallyManagedVirtualTime() { VirtualTimeScheduler vts = VirtualTimeScheduler.create(); try { VirtualTimeScheduler.getOrSet(vts); assertThat(VirtualTimeScheduler.get()).isSameAs(vts); Flux<String> flux = Flux.just("foo").delayElements(Duration.ofSeconds(4)); DefaultVerifySubscriber<String> s = new DefaultStepVerifierBuilder<String>(StepVerifierOptions.create() .initialRequest(Long.MAX_VALUE) .virtualTimeSchedulerSupplier(() -> vts), null)//important to avoid triggering of vts capture-and-enable .thenAwait(Duration.ofSeconds(1)) .expectNext("foo") .expectComplete() .toSubscriber(); flux.subscribe(s); vts.advanceTimeBy(Duration.ofSeconds(3)); s.verify(); assertThat(s.virtualTimeScheduler()).isSameAs(vts); assertThat(VirtualTimeScheduler.get()).isSameAs(vts); } finally { VirtualTimeScheduler.reset(); } }
@Test public void suppliedVirtualTimeButNoSourceDoesntEnableScheduler() { VirtualTimeScheduler vts = VirtualTimeScheduler.create(); new DefaultStepVerifierBuilder<String>(StepVerifierOptions.create() .initialRequest(Long.MAX_VALUE) .virtualTimeSchedulerSupplier(() -> vts), null) //important to avoid triggering of vts capture-and-enable .expectNoEvent(Duration.ofSeconds(4)) .expectComplete() .toSubscriber(); try { //also test the side effect case where VTS has been enabled and not reset VirtualTimeScheduler current = VirtualTimeScheduler.get(); assertThat(current).isNotSameAs(vts); } catch (IllegalStateException e) { assertThat(e).hasMessageContaining("VirtualTimeScheduler"); } }
@Override public Assertions verifyThenAssertThat(Duration duration) { HookRecorder stepRecorder = new HookRecorder(); stepRecorder.plugHooks(parent.options); try { //trigger the verify Duration time = verify(duration); //return the assertion API return new DefaultStepVerifierAssertions(stepRecorder, time, parent.errorFormatter); } finally { stepRecorder.unplugHooks(); } }
final DefaultStepVerifier<T> build() { return new DefaultStepVerifier<>(this); }
@Test public void subscribedTwice() { Flux<String> flux = Flux.just("foo", "bar"); DefaultVerifySubscriber<String> s = new DefaultStepVerifierBuilder<String>(StepVerifierOptions.create().initialRequest(Long.MAX_VALUE), null) .expectNext("foo", "bar") .expectComplete() .toSubscriber(); flux.subscribe(s); flux.subscribe(s); assertThatExceptionOfType(AssertionError.class) .isThrownBy(s::verify) .withMessageStartingWith("expectation failed (an unexpected Subscription has been received"); }
@Override public Duration verifyErrorMatches(Predicate<Throwable> predicate) { return expectErrorMatches(predicate).verify(); }
@Override public Duration verifyError(Class<? extends Throwable> clazz) { return expectError(clazz).verify(); }
@Override public Duration verify() { return verify(defaultVerifyTimeout); }