TDD
Last updated
Last updated
TDD 에 대해서 주의할 점 테스트 코드를 작성한다고 해서 TDD 가 아닙니다.
TDD Cycle 에 따라 테스트 코드를 먼저 작성하고, 구현하고, 리팩터링 하는 과정을 엄격하게 지켜서 개발을 진행해야 TDD 라고 할 수 있다.
Red → 실패하는 테스트 코드를 작성. 인터페이스와 스펙에 집중한다.
Green → 재빨리 테스트를 통과시킨다. 올바른 방법이 아니어도 괜찮다.
Refactor → 리팩터링을 통해 코드를 올바르게 만든다. TDD에서 가장 중요한 부분이지만, 간과될 때가 많다.
일단은 작동해야 한다. 그 이후에 리팩터링을 하는 것
작은 단계를 찾고, 코드에서 피드백을 얻는 게 (어렵고) 중요하다.
2번이 어렵다면 1번으로 돌아가서 더 작고 쉬운 문제를 정의하고, 3번을 위해 의도를 드러내고 중복을 찾아 제거하는 연습을 해야 한다.
이 둘이 익숙하지 않으면 TDD를 하는 게 거의 불가능하고, 사실 이 둘이 어려우면 일반적인 개발 또는 클린 코드를 작성하는 것 또한 매우 힘들다.
Facebook에서 만든 테스트 도구
테스트 케이스를 정의할 때 크게 두 가지 방법을 사용한다:
test 함수로 개별 테스트를 나열하는 방식.
BDD 스타일로 주체-행위 중심으로 테스트를 조직화하는 방식.
테스트를 위한 파일명은 test | spec으로 작성한다.
Jest에서 TypeScript를 사용하도록 jest.config.js 작성
자동으로 계속 jest가 감지할 수 있도록 하려면 다음과 같이 한다.
Given-When-Then 스타일
준비 - 실행 - 검증
700W 전자렌지를 준비해서 3분만 돌리면 완성!
context는 지원하지 않으므로, 다음과 같이 사용한다.