tdd
테스트 더블
테스트 더블
- 더미 (Dummy)
- 스텁 (Sutb)
- 스파이 (Spy)
- 목 (Mock)
- 페이크 (Fake)
더미
테스트 환경에서 특정 모듈이 필요하지만 해당 모듈의 구현이나 기능 실행까지는 필요 없는 경우 사용
단순히 테스트 실행 시 필요한 모듈이나 함수를 빈 껍데기 형태로 만든 것이다.
별도로 구현을 하지 않았기 때문에 어떠한 동작도 실행하지 않는다.
더미 데이터도 마찬가지이다.
스텁
모듈이 호출될 때 정해진 값을 반환하도록 만든 형태
실제 모듈 내부로직을 세세하게 구현하진 않지만 테스트 환경에 맞게 미리 준비해 둔 결과를 반환한다.
정해진 케이스 외에 다른 케이스에 대한 대응은 스톱을 통해 할 수 없다.
프론트엔드 단위 테스트나 통합 테스트에서 외부 모듈의 일부 기능만 필요할 때가 많은데 이 때 스텁을 사용한다.
스파이
스텁을 조금 더 고도화한 형태
구현된 객체의 호출 정보까지 기록한다
자기 자신이 호출되었을 때의 상황을 기록하기 때문에 모듈의 호출 여부를 확인할 때 좋다
vitest에서는 vi.fn()을 통해 정의
목
실제 모듈과 유사한 행동을 하도록 만들어진 모의 객체
페이크
특정 모듈을 테스트 전용으로 만든 단순한 모듈로 대체하는 것
실제로 사용되는 모듈의 모습은 아니지만 테스트 환경에 맞게 가짜로 구현된 함수나 객체
페이크 객체를 사용하면 실제 구현된 모듈이 없어도 신속하게 테스트를 실행할 수 있다는 장점이 있다.