org.springframework.test.web.reactive.server

Class 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:
    EntityExchangeResult
    • Method Detail

      • 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();
         
      • getResponseBodyContent

        @Nullable
        public byte[] getResponseBodyContent()
        Return the raw request body content written as a byte[].

        Note: this method should typically be called after the response has been consumed in full via getResponseBody(). Calling it first will cause the response Flux<T> to be consumed via getResponseBody.ignoreElements().

        Overrides:
        getResponseBodyContent in class ExchangeResult
      • consumeWith

        public void consumeWith(java.util.function.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 - consumer for "this" instance