# 테스트 더블

  • 테스트 코드에서 실제 의존성을 사용하기 어려운 경우, 테스트 더블 사용 가능
  • 실제 의존성을 테스트에 사용하는 경우 외부 세계에 부수 효과를 유발할 수 있음
  • 외부 세계에 의존적이기 때문에 비결정적인 동작을 유발할 수 있음
  • 실제 의존성을 포함하기 위해 복잡한 설정이 필요한 경우도 존재
  • 테스트 더블을 통해 테스트와 외부 세계를 서로 보호하고 복잡한 설정을 단순화 가능

# 테스트 더블의 종류

# 더미

  • Dummy
  • 아무런 동작도 하지 않으며, 인스턴스화 된 객체만 필요한 경우에 사용

# 스텁

  • Stub
  • 구현을 단순한 것으로 대체
  • 테스트에 맞게 단순히 원하는 동작을 수행

# 페이크

  • Fake
  • 제품에는 적합하지 않지만, 실제 동작하는 구현 제공

# 스파이

  • Spy
  • 호출된 내역을 기록
  • 기록을 통해 테스트 결과를 검증할 때 사용

#

  • Mock
  • 기대한 대로 상호작용하는지 행위를 검증
  • 기대한 것 처럼 동작하지 않는다면, 예외 발생 가능