如何在单元测试中解决WebClient.Builder依赖注入不满足异常
问题原因
单元测试时仅加载了MyConfig,但WebClient.Builder这个Bean是由Spring Web的自动配置类(如WebClientAutoConfiguration)负责创建的。单独加载自定义配置类的情况下,Spring容器中不存在WebClient.Builder实例,导致MyConfig中创建WebClient的Bean方法无法获取依赖,进而抛出UnsatisfiedDependencyException。
解决方案
方案1:启用WebClient自动配置
在测试类上添加@AutoConfigureWebClient注解,让Spring自动注入WebClient.Builder所需的配置:
@SpringJUnitWebConfig(classes = MyConfig.class) @AutoConfigureWebClient public class MyTest { @Autowired MyService service; }
方案2:手动提供WebClient.Builder Bean
在MyConfig中手动定义WebClient.Builder的Bean,确保容器内存在该实例:
@Configuration public class MyConfig { @Bean WebClient.Builder webClientBuilder() { return WebClient.builder(); } @Bean WebClient webClient(WebClient.Builder webClientBuilder) { return webClientBuilder.build(); } }
方案3:Mock WebClient(推荐单元测试场景使用)
如果是单元测试,无需真实的WebClient调用,可以用@MockBean直接模拟WebClient,跳过对WebClient.Builder的依赖:
@SpringJUnitWebConfig(classes = MyConfig.class) public class MyTest { @Autowired MyService service; @MockBean WebClient webClient; }
内容的提问来源于stack exchange,提问作者bhantol
相关产品推荐
相关产品推荐

