WebFluxTest报错Timeout on blocking read for 5000 MILLISECONDS解决

本文介绍在使用Spring WebFlux的WebTestClient进行单元测试时遇到的超时错误及解决方案。通过调整@AutoConfigureWebTestClient注解中的timeout属性,可有效解决WebTestClient默认5秒超时的问题。

使用Spring WebFlux开发后端接口时可以用@WebFluxTest做单元测试,需要用到WebTestClient作为test客户端,使用WebTestClient.get或WebTestClient.post发送请求,遇到了报错:

java.lang.IllegalStateException: Timeout on blocking read for 5000 MILLISECONDS

java.lang.IllegalStateException: Timeout on blocking read for 5000 MILLISECONDS

	at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:123)
	at reactor.core.publisher.Mono.block(Mono.java:1688)
	at org.springframework.test.web.reactive.server.DefaultWebTestClient$DefaultRequestBodyUriSpec.exchange(DefaultWebTestClient.java:307)
	at com.alibaba.nhcil.apigateway.controller.HttpInvokerControllerTest.invokeAbilityByKeyFailureDueToInvalidURL(HttpInvokerControllerTest.java:117)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:675)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at ........

解决方法:

WebTestClient默认超时为5秒,可以使用@AutoConfigureWebTestClient调整超时时间,如

@WebFluxTest(value = {HttpInvokerController.class})
@AutoConfigureWebTestClient(timeout = "10000")
class ControllerTest {

    @Autowired
    private WebTestClient webClient;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值