AI 도서관 · Claude · 단축 명령어 · 코딩

/redgreen

테스트가 먼저 실패해야 구현으로 넘어갑니다. 순서를 강제하는 방식

내용

[/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개 통과

⑥ 정리 (동작은 그대로)
   〈중복 제거 등〉

다음 기능으로 넘어갈까요?

⚠️ ③에서 실패 메시지가 안 보이면 다시 시키세요.
⚠️ 테스트가 처음부터 통과했다면 멈추고 이유를 확인해야 합니다.
   그 테스트는 아무것도 지키지 않는 것입니다.
⚠️ 한 번에 여러 기능을 만들었다면 순서가 무너진 것입니다.

받은 답 확인하기

잘못 나왔을 때 이어서 보낼 말

③ 단계에서 테스트를 실제로 돌려 실패 메시지를 보여줘.
한 번에 하나씩만 해줘. 하나 끝나면 다음으로 넘어갈지 물어봐줘.
내가 주지 않은 조건은 지어내지 말고 물어봐줘.

근거

유형
일반 프롬프트 — 대화창에 붙여넣습니다
사용 환경
Claude Code · 테스트를 실행할 수 있는 환경
주의
테스트가 처음부터 통과하면 멈추고 이유를 확인하세요. 그 테스트는 아무것도 지키지 않는 것입니다.
공식 출처
https://github.com/obra/superpowers
확인일
2026-09-09 — 이후 바뀌었을 수 있습니다
도서관에서 열기 — 내 내용 넣고 복사하기