我在2.7.x版本中开发了一个Sping Boot 应用程序。对于集成测试,我试图自定义WebTestClient以添加默认头。
我已经尝试过了,但是请求中没有添加header:
@AutoConfigureWebTestClient
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class TestClass1{
@Autowired
private WebTestClient webTestClient;
@Test
public void test1() throws Exception {
webTestClient.get()
.uri("/foobar/")
.exchange()
.expectStatus().isOk()
.expectBody(JsonArray.class);
}
}
配置类:
@TestConfiguration
public class WebTestClientConfig {
@Bean
public WebTestClient client() {
return WebTestClient.bindToServer()
.responseTimeout(Duration.ofMinutes(2))
.defaultHeader(API_KEY_HEADER, API_KEY_VALUE)
.exchangeStrategies(ExchangeStrategies.withDefaults())
.build();
}
}
更新:
我还尝试在'WebTestClientConfig'类中使用WebTestClientBuilderCustomizer,并删除了'client()'方法,但问题仍然存在。请参阅以下示例:
@TestConfiguration
public class WebTestClientConfig {
@Bean
public WebTestClientBuilderCustomizer webTestClientBuilderCustomizer() {
return (builder) -> builder.defaultHeader(API_KEY_HEADER, API_KEY_VALUE);
}
}
有什么想法可以帮我实现目标吗?谢谢。
1条答案
按热度按时间bq9c1y661#
在@samabcde的帮助下,我将代码更改为以下解决方案:
测试类别:
配置类: