AutoConfigureWebTestClient

AutoConfigureWebTestClient

我正在使用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。你能确认一下吗?

10-05 22:54