3.1 의존성 유형
필자 경험에 따르면, 작업 단위에서 사용할 수 있는 의존성에는 주요한 두 가지 유형이 있다.
• 외부로 나가는 의존성: 작업 단위의 종료점을 나타내는 의존성이다. 예를 들어 로거(logger) 함수 호출, 데이터베이스에 저장, 이메일 발송, API나 웹훅에 알림을 보내는 등 작업을 포함한다. 이러한 작업은 모두 동사(‘호출’, ‘저장’, ‘보내기’, ‘알림’)로 표현되며, 작업 단위에서 외부로 흘러가는 일종의 파이어-앤-포겟(fire-and-forget)2 시나리오를 의미한다. 각 작업은 종료점을 나타내거나 작업 단위 내 특정 논리 흐름의 끝을 의미한다.
• 내부로 들어오는 의존성: 종료점을 나타내지 않는 의존성으로, 작업 단위의 최종 동작에 대한 요구 사항을 나타내지 않는다. 단지 테스트에 필요한 특수한 데이터나 동작을 작업 단위에 제공하는 역할을 한다. 예를 들어 데이터베이스 쿼리 결과, 파일 시스템의 파일 내용, 네트워크 응답 결과 등이 있다. 이러한 의존성들은 모두 이전 작업의 결과로, 작업 단위로 들어오는 수동적인 데이터 조각3이라고 할 수 있다.