728x90
반응형
목차는 테스트 & 리팩토링 목차 에 있습니다.
[테스트 & 리팩토링 1편] 외부 연동 코드를 테스트 하는 방법
- 아래와 같이 외부 연동 API 를 호출하는 서비스 및 메소드가 있다고 가정하겠습니다.
- MemberService.register() 를 테스트 코드로 만들어 테스트 하고 싶은데 외부 연동 메소드가 있습니다.
- 이럴 경우 Mock 을 사용해서 처리를 할 수도 있지만 Mock 을 사용하기 보단 interface 를 만들어 추상화해서 처리하는 방법에 대해서 정리했습니다.
public class MemberService {
public void register() {
...
...
String result = ExternalApi.call();
...
...
}
}
interface 를 사용하여 작성한 source
- 아래와 같이 interface 를 통해 작성하면 테스트코드를 작성할 때, 구현체를 교체하면 쉽게 서비스 코드를 테스트 할 수 있습니다.
public interface ExternalService {
public String call();
}
public class ExternalServiceImpl implements ExternalService {
public String call() {
return "외부연동 테스트";
}
}
@RequiredArgsConstructor
public class MemberService {
private final ExternalService externalService;
public void register() {
xxx
xxx
String result = externalService.call();
xxx
xxx
}
}
결론
- Mock 을 사용해서 외부 연동 테스트에 대한 결과 값을 받도록 처리하는게 아니라 위와 같이 interface 를 사용해서 구현한다면 더욱 유연하고 견고한 테스트 코드를 작성할 수 있습니다.
'test & refactoring' 카테고리의 다른 글
[테스트 및 리팩토링 7편] TestContainer Example (0) | 2023.04.22 |
---|---|
[테스트 & 리팩토링 6편] 팩토리 패턴 if else 줄이기 (map, functional interface 사용) (2) | 2022.08.01 |
[테스트 & 리팩토링 4편] github pull request template 및 CodeReview 정리 (0) | 2022.06.27 |
[테스트 & 리팩토링 3편] package layer, package import 정리 (0) | 2022.06.27 |
[테스트 & 리팩토링 2편] Junit4, Junit5 정리 (0) | 2021.09.28 |
댓글