9장. 목 처리에 대한 모범 사례

9장. 목 처리에 대한 모범 사례

목은 테스트 대상 시스템과 의존성 간의 상호 작용을 모방하고 검사하는 데 도움이 되는 테스트 대역이다

목은 비관리 의존성에만 적용해야 된다

목의 가치를 극대화하기

비관리 의존성에만 목을 사용하게끔 제한하는 것이 중요하지만 이는 목의 가치를 극대화 하기 위한 첫 번째 단계일 뿐이다

시스템 끝에서 상호 작용 검증하기

시스템 끝에서 비관리 의존성과의 상호 작용을 검증하라.

목을 스파이로 대체하기

스파이는 목과 같은 목적을 수행하는 테스트 대역이다
스파이는 수동으로 작성하는 반면에 목은 목프레임워크의 도움을 받아 생성한다는 것이 유일한 차이점이다

시스템 끝에 있는 클래스의 경우 스파이가 목보다 낫다

목 처리에 대한 모범 사례

  • 비관리 의존성에만 목 적용하기
  • 시스템 끝에 있는 의존성에 대해 상호 작용 검증하기
  • 통합 테스트에서만 목을 사용하고 단위 테스트에서는 하지 않기
  • 항상 목 호출 수 확인하기
  • 보유 타입만 목으로 처리하기

목은 통합 테스트만을 위한 것

비지니스 로직과 오케이스레이션의 분리에서 비롯된다

테스트당 목이 하나일 필요는 없음

단위 테스트의 단위는 코드의 단위가 아니라 동작의 단위이다

호출 횟수 검증하기

비관리 의존성과의 통신에 관해서 다음 두가지 모두 확인하는 것이 중요하다

  • 예상하는 호출이 있는가?
  • 예상치 못한 호출이 있는가?

보유 타입만 목으로 처리하기

보유 타입만 목으로 처리하는것

참조