SpringBoot @WebMvcTest, autowiring RestTemplateBuilder

2022-09-02 09:15:48

我在测试弹簧控制器时遇到了一个问题。我在测试类中使用注释@WebMvcTest。当我运行测试时,我收到这个错误:没有可用的'org.springframework.boot.web.client.RestTemplateBuilder'类型的合格bean。

我正在将 RestTemplate 用于项目中的其他类,因此我在主类中定义了一个 bean:

@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
    return builder.build();
}

为了让它工作,我必须以这种方式定义我的 restTemplate bean:

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}

是注释@WebMvcTest有问题,还是我错过了什么?

谢谢


答案 1

是的,这确实感觉像一个错误。
但是,您可以通过将现有测试类添加到测试类中来轻松解决它@AutoConfigureWebClient@WebMvcTest


答案 2

当您向@Bean定义中添加任何参数时,这意味着您正在寻找要注入的提到的T类型的bean。更改此 :

@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
    return builder.build();
}

 @Bean
    public RestTemplate restTemplate() {

       RestTemplateBuilder builder=new RestTemplateBuilder(//pass customizers);

        return builder.build();
    }

推荐