Search code examples
javareactive-programmingspring-reactive

How to use iterable in StepVerifier in Spring Reactive testing


I have written a test method for creation of Flux object.

Test Method:

@Test
public void testCreateFlux() {
    Flux<String> fruitFlux = Flux
            .just("A", "B", "C", "D");

    StepVerifier.create(fruitFlux)
            .expectNext("A")
            .expectNext("B")
            .expectNext("C")
            .expectNext("D")
            .verifyComplete();
}

My question is there any way I can simplify my test method without using multiple expectNext() statements.


Solution

  • The expectNext is overloaded to accept multiple types.

    https://projectreactor.io/docs/test/3.1.2.RELEASE/api/reactor/test/StepVerifier.Step.html

    https://projectreactor.io/docs/test/3.1.2.RELEASE/api/reactor/test/StepVerifier.Step.html#expectNext-T-T-T-T-T-T-

    StepVerifier.Step<T> expectNext(T t1,
                                    T t2,
                                    T t3,
                                    T t4,
                                    T t5,
                                    T t6)
    

    There's methods that accept less, and one that accepts varargs.

    It can also accept an interable via the expectNextSequence method

    https://projectreactor.io/docs/test/3.1.2.RELEASE/api/reactor/test/StepVerifier.Step.html#expectNextSequence-java.lang.Iterable-