Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用spring webflux WebClient测试虚拟时间时出现问题_Spring_Spring Webflux - Fatal编程技术网

使用spring webflux WebClient测试虚拟时间时出现问题

使用spring webflux WebClient测试虚拟时间时出现问题,spring,spring-webflux,Spring,Spring Webflux,当我使用monoFromSupplier作为selectedMono时,以下测试通过。 然而,当我切换到monoFromWebClient时,它不能正确地提前时间。我做错了什么 StepVerifier.withVirtualTime(() -> { Mono<String> monoFromSupplier = Mono.fromSupplier(() -> "AA") .doOnNext(po ->

当我使用
monoFromSupplier
作为
selectedMono
时,以下测试通过。 然而,当我切换到
monoFromWebClient
时,它不能正确地提前时间。我做错了什么

StepVerifier.withVirtualTime(() -> {
            Mono<String> monoFromSupplier = Mono.fromSupplier(() -> "AA")
                    .doOnNext(po -> {
                        System.out.println("monoFromSupplier:onNext " + Thread.currentThread().getName());
                    });

            Mono<String> monoFromWebClient = WebClient.create("http://...")
                    .get()
                    .retrieve()
                    .bodyToMono(String.class)
                    .doOnNext(po -> {
                        System.out.println("monoFromWebClient:onNext " + Thread.currentThread().getName());
                    });


            Mono<?> selectedMono = monoFromSupplier; 
            return selectedMono.repeatWhen(companion -> companion.take(3)
                    .delayUntil(r -> {
                        Duration dur = Duration.ofSeconds(500);
                        System.out.println("delay... " + dur);
                        return Mono.delay(dur);
                    }))
                    .last()
                    .log();

        })
                .thenAwait(Duration.ofDays(1))
                .expectNextCount(1)
                .expectComplete()
                .verify();
StepVerifier.withVirtualTime(()->{
Mono monoFromSupplier=Mono.fromSupplier(()->“AA”)
.doOnNext(po->{
System.out.println(“monoFromSupplier:onNext”+Thread.currentThread().getName());
});
Mono monoFromWebClient=WebClient.create(“http://...")
.get()
.retrieve()
.bodyToMono(String.class)
.doOnNext(po->{
System.out.println(“monoFromWebClient:onNext”+Thread.currentThread().getName());
});
Mono selectedMono=来自供应商的Mono;
返回selectedMono.repeatWhen(companion->companion.take)(3)
.延迟至(r->{
持续时间dur=持续时间秒(500);
System.out.println(“延迟…”+dur);
返回单频延迟(dur);
}))
.last()
.log();
})
.然后等待(持续天数(1))
.expectNextCount(1)
.expectComplete()
.verify();

Reactor虚拟时间支持仅在单个JVM中起作用-它通过更改
调度程序的时钟来起作用(通常使其运行得更快)
WebClient
此处跨越网络边界并发送真实的HTTP请求-Reactor无法操纵真实的物理时间

TL;博士这是不受支持的