tdd

테스트 더블

테스트 더블

  • 더미 (Dummy)
  • 스텁 (Sutb)
  • 스파이 (Spy)
  • 목 (Mock)
  • 페이크 (Fake)

더미

테스트 환경에서 특정 모듈이 필요하지만 해당 모듈의 구현이나 기능 실행까지는 필요 없는 경우 사용

단순히 테스트 실행 시 필요한 모듈이나 함수를 빈 껍데기 형태로 만든 것이다.

별도로 구현을 하지 않았기 때문에 어떠한 동작도 실행하지 않는다.

더미 데이터도 마찬가지이다.

스텁

모듈이 호출될 때 정해진 값을 반환하도록 만든 형태

실제 모듈 내부로직을 세세하게 구현하진 않지만 테스트 환경에 맞게 미리 준비해 둔 결과를 반환한다.

정해진 케이스 외에 다른 케이스에 대한 대응은 스톱을 통해 할 수 없다.

프론트엔드 단위 테스트나 통합 테스트에서 외부 모듈의 일부 기능만 필요할 때가 많은데 이 때 스텁을 사용한다.

스파이

스텁을 조금 더 고도화한 형태

구현된 객체의 호출 정보까지 기록한다

자기 자신이 호출되었을 때의 상황을 기록하기 때문에 모듈의 호출 여부를 확인할 때 좋다

vitest에서는 vi.fn()을 통해 정의

실제 모듈과 유사한 행동을 하도록 만들어진 모의 객체

페이크

특정 모듈을 테스트 전용으로 만든 단순한 모듈로 대체하는 것

실제로 사용되는 모듈의 모습은 아니지만 테스트 환경에 맞게 가짜로 구현된 함수나 객체

페이크 객체를 사용하면 실제 구현된 모듈이 없어도 신속하게 테스트를 실행할 수 있다는 장점이 있다.