Class FluxExchangeResult<T>

java.lang.Object
org.springframework.test.web.reactive.server.ExchangeResult
org.springframework.test.web.reactive.server.FluxExchangeResult<T>
Type Parameters:
T - the type of elements in the response body

public class FluxExchangeResult<T> extends ExchangeResult
ExchangeResult variant with the response body decoded as Flux<T> but not yet consumed.
Since:
5.0
Author:
Rossen Stoyanchev
See Also:
  • Method Details

    • getResponseBody

      public reactor.core.publisher.Flux<T> getResponseBody()
      Return the response body as a Flux<T> of decoded elements.

      The response body stream can then be consumed further with the "reactor-test" StepVerifier and cancelled when enough elements have been consumed from the (possibly infinite) stream:

       FluxExchangeResult<Person> result = this.client.get()
              .uri("/persons")
              .accept(TEXT_EVENT_STREAM)
              .exchange()
              .expectStatus().isOk()
              .expectHeader().contentType(TEXT_EVENT_STREAM)
              .expectBody(Person.class)
              .returnResult();
      
       StepVerifier.create(result.getResponseBody())
              .expectNext(new Person("Jane"), new Person("Jason"))
              .expectNextCount(4)
              .expectNext(new Person("Jay"))
              .thenCancel()
              .verify();
       
    • consumeWith

      public void consumeWith(Consumer<FluxExchangeResult<T>> consumer)
      Invoke the given consumer within ExchangeResult.assertWithDiagnostics(Runnable) passing "this" instance to it. This method allows the following, without leaving the WebTestClient chain of calls:
              client.get()
                      .uri("/persons")
                      .accept(TEXT_EVENT_STREAM)
                      .exchange()
                      .expectStatus().isOk()
                      .returnResult()
                      .consumeWith(result -> assertThat(...);
       
      Parameters:
      consumer - the consumer for "this" instance