더북(TheBook)

스텁은 내부로 들어오는 의존성(간접 입력)을 끊어 준다. 스텁은 가짜 모듈이나 객체 및 가짜 동작이나 데이터를 코드 내부로 보내는 가짜 함수를 의미한다. 이를 통해 테스트 대상 코드가 외부 시스템이나 데이터에 의존하지 않고도 동작할 수 있게 한다. 또 스텁은 검증하지 않는다.5 따라서 하나의 테스트에서 여러 스텁을 사용할 수 있다.

목은 외부로 나가는 의존성(간접 출력 또는 종료점)을 끊어 준다. 목은 가짜 모듈이나 객체 및 호출 여부를 검증하는 함수를 의미한다. 목은 단위 테스트에서 종료점을 나타낸다. 따라서 하나의 테스트에 목은 하나만 사용하는 것이 일반적이다.

안타깝게도 현업에서는 ‘mock’이라는 단어가 스텁과 목을 모두 아우르는 용어로 사용할 때가 많다. “이 부분은 목업을 만들어서 테스트하겠습니다.”나 “모의 데이터베이스가 있어서…….” 같은 표현이 이에 해당한다. 이러한 용어 사용은 스텁과 목의 차이를 명확히 알고 있는 사람 입장에서는 엄청 헷갈릴 수 있다.6 스텁과 목은 큰 차이가 있으며(목은 하나의 테스트에서 한 번만 사용해야 한다), 올바른 용어를 사용하여 상대방이 무엇을 의미하는지 명확히 하는 것이 중요하다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.