1

Mono.delayを使ってテストしようとしてStepVerifierいます。私のコードは次のとおりです。

Mono[Long] mono = Mono.delay(Duration.ofDays(5));

StepVerifier.withVirtualTime(() -> mono)
    .thenAwait(Duration.ofDays(5))
    .expectNextCount(1)
    .expectComplete()
    .verify();

そして、私は次のスタックトレースを取得しています

expectation "expectNextCount" failed (expected: count = 1; actual: counted = 0; signal: onError(reactor.core.Exceptions$BubblingException:
java.util.concurrent.RejectedExecutionException: Scheduler unavailable))
java.lang.AssertionError: expectation "expectNextCount" failed (expected: count = 1; actual: counted = 0; signal: onError(reactor.core.Exceptions$BubblingException: java.util.concurrent.RejectedExecutionException: Scheduler unavailable))
at reactor.test.DefaultStepVerifierBuilder.failPrefix(DefaultStepVerifierBuilder.java:1679)
at reactor.test.DefaultStepVerifierBuilder.fail(DefaultStepVerifierBuilder.java:1675)
at reactor.test.DefaultStepVerifierBuilder$DefaultVerifySubscriber.checkCountMismatch(DefaultStepVerifierBuilder.java:886)
at reactor.test.DefaultStepVerifierBuilder$DefaultVerifySubscriber.onSignalCount(DefaultStepVerifierBuilder.java:1112)
at reactor.test.DefaultStepVerifierBuilder$DefaultVerifySubscriber.onExpectation(DefaultStepVerifierBuilder.java:963)
at reactor.test.DefaultStepVerifierBuilder$DefaultVerifySubscriber.onError(DefaultStepVerifierBuilder.java:727)
at reactor.core.publisher.MonoDelay.subscribe(MonoDelay.java:59)
at reactor.test.DefaultStepVerifierBuilder$DefaultStepVerifier.verify(DefaultStepVerifierBuilder.java:532)
at reactor.test.DefaultStepVerifierBuilder$DefaultStepVerifier.verify(DefaultStepVerifierBuilder.java:508)

ソースコードをトレースした後、エグゼキューターがメソッドでシャットダウンされているようですSchedulers.setFactory

ここで何かが足りないのではないかと思っています。

4

1 に答える 1

2

わかりました、私は問題の根底に到達していると思います。

StepVerifier必要Supplierであり、私の場合、作成されMono[Long]た既存のMonoものを提供しました。代わりに次のことを行う必要があります

StepVerifier.withVirtualTime(() -> Mono.delay(Duration.ofDays(5)))
    .thenAwait(Duration.ofDays(5))
    .expectNextCount(1)
    .expectComplete()
    .verify();

このようにして、Mono提供されたが最初に作成されず、エグゼキュータがシャットダウンされません。

于 2016-12-27T15:23:45.563 に答える