如何对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 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谓词结果(。

(侧面警告:请记住,这与无限序列不太合作(

相关内容

最新更新