패스잇
개발 문화 · 협업 · 중급

테스트 더블(Test Double)의 개념과 종류(Dummy, Fake, Stub, Spy, Mock)에 대해 간략히 설명하고, 각각의 사용 사례를 예시로 들어주세요.

힌트 · 테스트 대상 객체의 의존성을 제어하기 위한 객체들로, 목적에 따라 다양한 유형이 있으며 특정 상황에서 유용하게 사용됩니다.

테스트 격리의존성 대체상태 검증행위 검증테스트 용이성

모범답안

테스트 더블은 테스트 대상 객체의 의존성을 대체하는 객체입니다. 테스트 격리를 통해 테스트를 용이하게 만들어주죠. 종류는 크게 다섯 가지가 있습니다.

  • Dummy: 단순히 객체 전달을 위해 존재하며, 실제로 사용되지는 않습니다. 예를 들어, 생성자에 객체를 넘겨줘야 하지만 테스트에서 필요 없는 경우에 사용합니다.

  • Fake: 실제 동작을 흉내 내지만, 단순화된 형태로 구현됩니다. 예를 들어, 실제 데이터베이스 대신 메모리 데이터베이스를 사용하는 경우가 있습니다.

  • Stub: 미리 정의된 결과를 반환하도록 설정된 객체입니다. 특정 입력에 대해 항상 같은 출력을 보장해야 할 때 유용합니다. 예를 들어, 외부 API 호출 결과를 미리 정의된 값으로 대체할 수 있습니다.

  • Spy: Stub과 유사하지만, 호출 정보를 기록합니다. 호출 횟수나 인자 등을 검증할 때 사용합니다. 예를 들어, 특정 함수가 몇 번 호출되었는지 확인할 수 있습니다.

  • Mock: Spy보다 더 강력하며, 행위 검증에 특화되어 있습니다. 예상되는 상호작용을 미리 정의하고, 실제로 그 상호작용이 발생하는지 검증합니다. 예를 들어, 특정 메서드가 특정 인자로 호출되는지 확인할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 테스트 (TDD / BDD) 면접 질문

← 테스트 (TDD / BDD) 면접 질문 전체 보기