[TIL] 8월 18일
UserControllerTest가 갑자기 동작하지 않는다...!
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.itda.apiserver.jwt.TokenProvider' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
에러 로그를 보니 TokenProvider를 빈으로 등록하지 못하고 있다.
아래와 같이 @WebMvcTest를 이용하여 테스트하고 있다.
@WebMvcTest(UserController.class)
public class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private UserService userService;
@Mock
private User user;
private ObjectMapper objectMapper = new ObjectMapper();
@Test
@DisplayName("회원 가입 기능 테스트")
void signUp() throws Exception {
...
}
}
공식문서를 보니 @WebMvcTest 를 사용하여 테스트할 때는 @Component는 스캔하지 않는다고 해서 해당 문제가 발생하는 듯 하다.
컴포넌트를 등록하기 위해서 @Import 어노테이션을 사용해서 등록할 클래스를 명시하면 된다.
@WebMvcTest(UserController.class)
@Import(value = {TokenProvider.class, TokenExtractor.class})
public class UserControllerTest {
...
}
Oauth 구현, RestTemplate vs WebClient??
RestTemplate은 스프링 버전 5부터 유지 모드로 변경되고 향후 deprecated 될 예정이라고 한다.
Spring에서도 WebClient 사용을 권고하고 있다.
비동기를 지원한다. → 비동기적으로 동작하는 것에 대해 더 학습이 필요하다. (참고하기: https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html )
오늘 한일
- 이전에 프로젝트에서 oauth를 적용해보았는데도 어렵군..
- webclient를 학습하면서 oauth 구현하는 중이다.
- 코테 스터디 진행 - Leet code 세문제 풀었다.
Author And Source
이 문제에 관하여([TIL] 8월 18일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yeon/TIL-8월-18일저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)