我想在集成测试中使用stepverifier在mongo存储库中保存操作。
我准备了一个插入多个useritems的方法,以便进一步验证:
Flux<UserItems> saveMultiple(int numberOfItems) {
return Flux.range(0, numberOfItems)
.flatMap { userItemsRepository.save(new UserItem(it)) }
}
``` `userItemsRepository.save` 返回mono<useritem>
我准备了一个测试方法:
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()
}
我预计接下来的项目将以{0,1,2}的顺序出现。不幸的是,测试失败是因为 `java.lang.AssertionError` 以不确定的方式,在不同的步骤上。我想不出怎么做得好。这是我第一个测试React堆流量的方法。有人有主意,怎么处理这种情况吗?
1条答案
按热度按时间vyswwuz21#
flatmap操作符不保留源的顺序,而是让来自不同内部的值交错。因此,根据useritemsrepository.save的不同,您可以得到如下结果:
如果交错不困扰你,但想保持原来的秩序,你可以使用flatmapsequencial或如果你不想任何交错concatmap