[번역] Mocks Aren't Stubs | Classicist vs Mockist
· 약 40분
서론
- Classicist와 Mockist 방식의 테스트 방식, 사고방식의 차이가 정리된 글입니다.
- 본 글은 대표적인 Classicist TDDer인 martinfowler의 'Mocks Aren't Stubs(2007)'의 글을 기반으로 두고 있습니다.
- 본문의 예제는 TypeScript(with Jest)의 스타일로 코드를 작성했습니다.
원문은 Java(with JUnit)로 되어있으니 읽기 편하신 예제로 읽으시면 됩니다.
기본적인 테스트 살펴보기
- Order(주문), WareHouse(창고) 객체를 사용하는 주문 시스템 예제입니다.
- Order를 테스트하는 코드입니다.
- 하지만 order.fill 메서드를 테스트하려면 WareHouse의 인스턴스를 필요로 합니다.
- 기존 테스트 방식(Classicist)과 Mock 객체를 사용하는 테스트(Mockist) 방식의 예제가 각각 제공됩니다.
다음 예제에서 Order처럼 테스트하고자 하는 객체를 이를 테스트 대상 객체(object-under-test) 혹은 테스트 대상 시스템(SUT, system-under-test)이라고 부릅니다. (본 글에서는 SUT이라고 부르겠습니다.)