stepverifier具有assertNext
方法,该方法允许对下一个元素的值执行断言。
StepVerifier.create(dataFlux)
.assertNext(v -> checkValue(v)
.verifyComplete();
对于每个剩余元素,执行断言的好方法是什么(例如,检查每个元素都是正面的(?我期望像assertEveryNextElement
方法一样。
我第一次尝试在磁通的所有元素上执行断言
StepVerifier.create(dataFlux)
.recordWith(ArrayList::new)
.thenConsumeWhile(x -> true) // Predicate on elements
.consumeRecordedWith(matches ->
matches.forEach(v -> checkValue(v)))
.verifyComplete();
upd SimonBaslé建议仅使用thenconsumewhile,它可以重新求主。
StepVerifier.create(dataFlux)
.thenConsumeWhile(v -> {
assertThat(v).equalsTo(expected);
return true;
})
.verifyComplete();
以及更多的规范方法将Stepverifier用于此任务将是:
StepVerifier.create(dataFlux)
.thenConsumeWhile(v -> return expected.equals(v))
.verifyComplete();
这样做的预期方法是实际使用thenConsumeWhile
操作员并提供谓词。如果序列中有任何不匹配的元素,则StepVerifier
将错误。
并非基于断言,而是采用Predicate
而不是Consumer
。也就是说,您仍然可以使用断言库,任何AssertionError
都应未能通过测试(您仍然必须返回bogus谓词结果(。
(侧面警告:请记住,这与无限序列不太合作(