我正在使用WebTestClient
对控制器进行一些集成测试。如果我在控制器内设置一个断点,则会达到WebTestClient
5s的标准超时时间。解决方案是按照她的Timeout on blocking read for 5000 MILLISECONDS in Spring WEBFLUX的说明将@AutoConfigureWebTestClient(timeout = "600000")
添加到我的测试中。
对我来说@AutoConfigureWebTestClient(timeout = "600000")
不会改变任何东西。 5s后我仍然收到了timout异常。
任何想法有什么问题吗?
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@ActiveProfiles("test")
@Transactional
@Import(EntityFactoryConfiguration.class)
@AutoConfigureWebTestClient(timeout = "600000") // giv me 10 min for debugging
public class LogControllerIntegrationTest {
...
@Autowired
private WebTestClient webTestClient;
...
@Test
public void myTest() {
...
webTestClient.post().uri("/log")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.accept(MediaType.APPLICATION_JSON_UTF8)
.body(BodyInserters.fromObject(protocolLine))
.exchange()
.expectStatus().isOk();
}
最佳答案
我认为注释在您的设置中不起作用,因为默认情况下超时时间为already 5 seconds,那么如何尝试该链接问题的其他答案?
@BeforeEach
public void setUp() {
webTestClient = webTestClient
.mutate()
.responseTimeout(Duration.ofMillis(600000))
.build();
}
您可以从其名称中看到
@AutoConfigureWebTestClient
试图自动配置WebTestClient
,但我认为您可以通过自动装配WebTestClient
并可能对其进行配置来覆盖它吗?因此,继续手动设置超时!更新
Afaics,只需添加
spring-boot-starter-webflux
作为依赖项就足以获得WebTestClient
bean,因此我认为甚至不需要@AutoConfigureWebTestClient
。检查this。你能确认一下吗?