我为Handler(spring weblux)写了一个测试
试验:
@Test
public void checkServicesHandlerTest(){
Request request = new Request();
request.setMsisdn("ffdfdfd");
this.testClient.post().uri("/check")
.body(Mono.just(request), Request.class).exchange().expectStatus().isOk();
}
但结果我有一个错误。
Timeout on blocking read for 5000 MILLISECONDS
处理程序很简单
public Mono<ServerResponse> check(ServerRequest request){
Request request = request.bodyToMono(Request.class).block();
问题出在哪里?但如果我向服务器发送直接请求,一切正常。
答案 0 :(得分:12)
我在运行集成测试时看到了类似的问题和异常,其中一些集合了来自多个其他具有数据库访问权限的服务的响应。所以我们在运行Integration测试时间歇地看到这个问题。我们在Gradle中使用Spring Boot 2.0.0.RC1和Junit 5。我这样做是为了解决这个问题。关键是改变webclient,最坏情况下响应超时为30秒。
@Autowired
private WebTestClient webTestClient;
@BeforeEach
public void setUp() {
webTestClient = webTestClient
.mutate()
.responseTimeout(Duration.ofMillis(30000))
.build();
}
答案 1 :(得分:7)
您可以使用注释@AutoConfigureWebTestClient(timeout = "36000")
覆盖超时。
例如:
@AutoConfigureWebTestClient(timeout = "36000")
@SpringBootTest
class MyTestClass {
}