본문 바로가기
test & refactoring

[테스트 & 리팩토링 1편] 외부 연동 코드를 테스트 하는 방법

by 무대포 개발자 2022. 3. 24.
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 를 사용해서 구현한다면 더욱 유연하고 견고한 테스트 코드를 작성할 수 있습니다.

댓글