vendredi 20 novembre 2020

Reactor's StepVerifier: assertion fails in nondeterministic way on various step

I want to use StepVerifier in integration testing save operations in Mongo repository.

I prepared a method for inserting multiple UserItems for further verification:

Flux<UserItems> saveMultiple(int numberOfItems) {
    return Flux.range(0, numberOfItems)
            .flatMap { userItemsRepository.save(new UserItem(it)) }
}

userItemsRepository.save returns Mono<UserItem>

I prepared a test method:

def "Should save all UserItems"() {
    given:
    def numberOfItems = 3

    when:
    def saveResult = saveMultiple(numberOfItems)

    then:
    StepVerifier.create(saveResult)
            .expectNextMatches {it.itemNo == 0 }
            .expectNextMatches {it.itemNo == 1 }
            .expectNextMatches {it.itemNo == 2 }
            .expectComplete()
            .verify()
}

And I expect that next items will emerge in the order {0,1,2}. Unfortunately, the test fails because of java.lang.AssertionError in non deterministic way, on various step. I cannot figure out how to do it properly. It's my first approach to test Reactor flow. Anyone has an idea, how to handle such situations?

Aucun commentaire:

Enregistrer un commentaire