SpringBoot @WebMvcTest, 자동 배선 RestTemplateBuilder
스프링 컨트롤러를 테스트하는 동안 문제가 발생했습니다.저는 시험 수업에서 @WebMvcTest라는 주석을 사용하고 있습니다.테스트를 실행할 때 다음 오류가 발생합니다. 'org.springframework.boot.web.client 유형의 적격 빈이 없습니다.RestTemplateBuilder'를 사용할 수 있습니다.
프로젝트의 다른 클래스에 대해 RestTemplate를 사용하고 있으므로 메인 클래스에 빈을 정의했습니다.
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
작동하려면 restTemplate bean을 다음과 같이 정의해야 합니다.
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@WebMvcTest 주석에 문제가 있습니까? 아니면 제가 뭔가를 놓쳤습니까?
감사해요.
네, 이건 벌레처럼 느껴집니다.
하지만 추가하면 쉽게 해결할 수 있습니다.@AutoConfigureWebClient
기존 테스트 클래스와 함께@WebMvcTest
당신이 @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();
}
컨트롤러 테스트를 작성할 때는 일반적으로 모든 공동작업자에게 모의실험을 사용하는 것을 선호합니다.이를 통해 실제로 통화를 수행하지 않고도 예상되는 값을 사용하여 콩이 호출되는지 매우 쉽게 확인할 수 있습니다.
WebMvcTest를 사용하면 매우 쉽게 실행할 수 있습니다. 아래는 RestTemplateBean의 예입니다.
@RunWith(SpringRunner.class)
@WebMvcTest(SomeController.class)
public class SomeControllerTest {
@MockBean
private RestTemplate restTemplate;
@Test
public void get_WithData() {
mockMvc.perform(get("/something")).andExpect(status().isOk());
verify(restTemplate, times(1)).getForObject("http://localhost:8080/something", SomeClass.class);
}
}
언급URL : https://stackoverflow.com/questions/41673383/springboot-webmvctest-autowiring-resttemplatebuilder
'programing' 카테고리의 다른 글
node.js의 기존 json 개체에 새 특성 추가 (0) | 2023.07.05 |
---|---|
UIAertController 텍스트 필드에서 입력 값을 가져오는 방법은 무엇입니까? (0) | 2023.07.05 |
WooCommerce의 변형에 대한 확인란을 사용하여 다중 선택 허용 (0) | 2023.07.05 |
FOR 루프에서 식을 통해 연결하는 이유는 무엇입니까? (0) | 2023.07.05 |
Float/Firebase 앱에 아직 구성되지 않은 앱이 표시됩니다. (0) | 2023.07.05 |