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