1

根据其 Javadoc Mono<T>.materialize()

将传入的 onNext、onError 和 onComplete 信号转换为 Signal。由于错误被具体化为信号,因此将停止传播并发出 onComplete。完成信号将首先发出 Signal.complete() 然后有效地完成通量。

这意味着当没有发生错误时,Publisher返回的materialize应该至少发出 2 个信号:

  • Signal.next
  • Signal.complete

但是,此方法的返回类型Mono<Signal<T>>仅允许发出单个事件。所以我很困惑。代码应该是

Flux<Signal<Integer>> mono = Mono.just(1).materialize();
StepVerifier.create(mono)
    .expectNext(Signal.next(1))
    .expectNext(Signal.complete())
    .verifyComplete();
4

1 回答 1

2

Monomaterialize只发出一个Signal。Mono 上只能发生 3 种情况:

  1. 单声道成功并受到重视Signal.next(value)发出
  2. 单声道成功但为Signal.complete()发出
  3. 单声道错误Signal.error(throwable)发出
于 2017-01-13T19:12:08.377 回答