AI 도서관 · Claude · 단축 명령어 · 코딩
테스트가 먼저 실패해야 구현으로 넘어갑니다. 순서를 강제하는 방식
[/redgreen] 실패하는 테스트부터
아래 기능을 만들 건데 순서를 지켜줘.
① 이 기능이 무엇을 보장해야 하는지 한 문장으로 정리
② 그걸 확인하는 테스트를 먼저 작성
③ 테스트를 돌려서 **실패하는 것을 확인**하고, 실패 메시지를 보여줘
④ 그다음에 통과할 만큼만 구현
⑤ 다시 돌려서 통과 확인
⑥ 통과한 뒤에 정리 (동작은 그대로 두고)
③이 핵심이야. 테스트가 처음부터 통과하면 그 테스트는 아무것도 검증하지 않는 거니까,
그때는 멈추고 왜 통과했는지 먼저 알려줘.
한 번에 여러 기능을 하지 마. 하나 끝나면 다음으로 넘어갈지 물어봐줘.
📌 왜 실패를 먼저 보나
통과하는 테스트를 나중에 쓰면, 그 테스트는 이미 만들어진 코드에 맞춰 쓰입니다.
무엇이 깨졌을 때 실패하는지 아무도 모르는 테스트가 됩니다.
먼저 실패시켜 봐야 그 테스트가 실제로 무언가를 지키고 있다는 걸 압니다.
만들 기능:
{{INPUT}}
{{INPUT}} 자리에 내 내용을 넣어 쓰는 프롬프트입니다. 아래 버튼으로 열면 넣는 칸이 나옵니다.
언제 쓰나 · 새 기능을 시작할 때, 테스트가 구현에 끼워맞춰지는 것을 막고 싶을 때
만들 기능: 쿠폰 코드로 할인 금액 계산하기 - 쿠폰은 정액(3,000원)과 정률(10%) 두 종류 - 정률 쿠폰은 최대 5,000원까지만 - 이미 사용한 쿠폰은 적용되지 않아야 함 - 최소 주문 금액 조건이 붙은 쿠폰도 있음 언어: JavaScript / 테스트 러너: Jest
우리가 쓴 예시입니다. 실제 실행 결과가 아니고, 답변은 매번 조금씩 다릅니다.
① 이 기능이 보장해야 하는 것
유효한 쿠폰이면 규칙대로 할인 금액을 계산하고, 아니면 적용하지 않는다.
② 먼저 작성한 테스트
• 정액 쿠폰 3,000원 적용 → 할인 3000
• 정률 10%, 주문 40,000원 → 할인 4000
• 정률 10%, 주문 100,000원 → 할인 5000 (상한)
• 이미 사용한 쿠폰 → 적용되지 않음
• 최소 주문 금액 미달 → 적용되지 않음
③ 실패 확인 ← 여기가 핵심입니다
$ npx jest
● 정액 쿠폰 3,000원 적용
ReferenceError: applyCoupon is not defined
→ 5개 테스트 모두 실패. 아직 구현이 없으므로 정상입니다.
④ 통과할 만큼만 구현
〈applyCoupon 최소 구현〉
⑤ 다시 실행 → 5개 통과
⑥ 정리 (동작은 그대로)
〈중복 제거 등〉
다음 기능으로 넘어갈까요?
⚠️ ③에서 실패 메시지가 안 보이면 다시 시키세요.
⚠️ 테스트가 처음부터 통과했다면 멈추고 이유를 확인해야 합니다.
그 테스트는 아무것도 지키지 않는 것입니다.
⚠️ 한 번에 여러 기능을 만들었다면 순서가 무너진 것입니다.③ 단계에서 테스트를 실제로 돌려 실패 메시지를 보여줘. 한 번에 하나씩만 해줘. 하나 끝나면 다음으로 넘어갈지 물어봐줘. 내가 주지 않은 조건은 지어내지 말고 물어봐줘.