有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在需要存储反应式代码输出的测试中,如何使用StepVerifier而不是block()?

当我编写验证反应性组件的测试时,我通常使用带有以下模式的StepVerifier

StepVerifier.create(...)
  .assertNext(...)
  ...
  .verifyComplete();

这种方法工作得很好,但有时需要获取生成的值并使用它继续测试场景。在这种情况下,我必须切换到:

var producedValue = publisher.block();
assertThat(producedValue)...;
someOtherAction(producedValue);

后者是完全好的,正如预期的那样工作,但是我觉得我可能会错过一些东西,而且StepVerifierAPI也应该有这样做的选项

在这种情况下,有没有办法避免阻塞,并且仍然坚持StepVerifier


共 (1) 个答案

  1. # 1 楼答案

    是否可以使用consumeNextWith运算符来获取值,而不使用block

            StepVerifier.create(...)
                .consumeNextWith(producedValue -> {
                    someOtherAction(producedValue);
                    assertThat(producedValue);
                    // if the next action produces a Mono
                    //StepVerifier.create(someOtherReactiveAction(producedValue))
                    //        .expectNext(result)
                    //        .verifyComplete();
                })
                .verifyComplete();