@TestConfiguration과 @Configuration

더기·2022년 4월 13일
0

스프링

목록 보기
1/4
post-thumbnail
post-custom-banner

문제점

OAuth 로그인을 구현하다 보니, 로그인 테스트를 작성하기 위해 OAuth에 요청 로직을
목킹해야하는 일이 생겼다. 어차피 OAuth 서비스는 요청만 잘하면 정상적인 동작이 보장되므로
실제로 요청할 필요가 없기 때문이다. 내가 테스트해야 하는 것은 요청에 의해 받아온
승인코드, accessToken, 회원 정보들을 조합하여 나의 서비스에 로그인이 되는지 회원가입이 되는지에 대한 것이다. 하지만 이를 인터셉터에서 처리하고 있다보니, 어떻게 목킹해야 할지 고민하게 되었다.

@TestConfiguration을 사용했는데 안된다.

여러 글을 찾아보니 @TestConfiguration을 사용하면 된다는 것을 알게 되었다.
먼저 코드 구조는 WebConfig에서 실제 환경 인터셉터를 구성하고,
TestWebConfig에서 테스트 환경 인터셉터를 구성했다.

public class WebConfig implements WebMvcConfigurer {
	...
}

@TestConfiguration
public class TestWebConfig implements WebMvcConfigurer {
	...
}

이렇게 구성을 했더니, 자꾸 WebConfig가 적용되었다.

빈 오버라이딩

디버깅을 찍어보니 원인은 WebConfig, TestWebConfig가 모두 빈으로 등록되어
먼저 등록된 WebConfig가 적용되게 된 것이다. 그래서 오버라이딩을 하기로 했다.

@Configuration("WebConfig")
public class WebConfig implements WebMvcConfigurer {
	...
}

@TestConfiguration("WebConfig")
public class TestWebConfig implements WebMvcConfigurer {
	...
}
원래는 빈 중복이 안되지만, `@TestConfiguration`은 테스트 환경 전용이기 때문에
가능하다. 오버라이딩을 하게되면, WebConfig는 빈으로 등록이 되지 않게되어
`@TestConfiguration`을 적용할 수 있다.
profile
wwqew11
post-custom-banner

0개의 댓글