如何对 StepVerifier 中的所有剩余元素执行断言?
How to perform assertion on all remaining elements in StepVerifier?
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 Simon Baslé 建议只使用 thenConsumeWhile,它会重新抛出 AssertionErrors。
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
都应该无法通过测试(您仍然必须 return 一个虚假的谓词结果)。
(附带警告:请记住这不适用于无限序列)
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 Simon Baslé 建议只使用 thenConsumeWhile,它会重新抛出 AssertionErrors。
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
都应该无法通过测试(您仍然必须 return 一个虚假的谓词结果)。
(附带警告:请记住这不适用于无限序列)