3.8 요약
• 테스트 더블은 테스트에서 사용되는 모든 종류의 가짜 의존성을 포괄하는 용어다. 테스트 더블은 목과 스텁 두 가지 유형으로 나눌 수 있으며, 다섯 가지로 세분화할 수 있다.
• 목은 작업 단위의 종료점에 해당하는 외부 의존성을 흉내 내고 그 동작을 검증하는 데 사용할 수 있다. 테스트 중인 시스템(SUT)은 외부 의존성을 호출하여 시스템의 상태 값을 변경한다. 스텁은 내부 의존성을 흉내 내는 데 사용할 수 있다. SUT는 이러한 의존성을 호출하여 필요한 데이터를 가져온다.
• 스텁은 신뢰할 수 없는 의존성을 페이크로 대체해서 테스트가 불안정해지는 것을 막아 준다.
• 작업 단위에 스텁을 주입하는 방법은 여러 가지다.
▪ 함수를 매개변수로 주입: 단순한 값 대신 함수를 주입한다.
▪ 부분 적용(커링) 및 팩토리 함수: 일부 컨텍스트(예 스텁으로 대체한 의존성)가 미리 설정된 상태로 반환하는 함수를 생성한다.
▪ 모듈 주입: 동일한 API를 가진 가짜 모듈로 실제 모듈을 대체한다. 이 방법은 나중에 모듈의 API가 변경되면 많은 리팩터링이 필요할 수 있어 다소 불안정하다.