tddlisted
Install: claude install-skill kimny1143/claude-code-template
# /tdd - Test-Driven Development
テスト駆動開発ワークフローを実行する。
## 使い方
```
/tdd # 対話的にTDDを開始
/tdd UserService # UserServiceのテストから開始
/tdd handlePayment edge # handlePaymentのエッジケーステスト
```
## TDDサイクル
```
┌─────────────────────────────────────────────────┐
│ 1. RED → テストを書く(失敗することを確認) │
│ 2. GREEN → 最小限のコードで通す │
│ 3. REFACTOR → リファクタ(テストは通ったまま)│
└─────────────────────────────────────────────────┘
```
## ワークフロ��
### Step 1: RED(テストを書く)
1. テスト対象を特定
- 新機能: 期待する入出力を定義
- バグ修正: バグを再現するテストを書く
2. テストファイルを作成/更新
```typescript
// tests/unit/services/user.service.test.ts
describe('UserService', () => {
describe('createUser', () => {
it('should create user with valid data', async () => {
const result = await userService.createUser({
email: 'test@example.com',
name: 'Test User',
});
expect(result.id).toBeDefined();
expect(result.email).toBe('test@example.com');
});
it('should throw error for duplicate email', async () => {
// エッジケース
await expect(
userService.createUser({ email: 'existing@example.com', name: 'Test' })
).rejects.toThrow('Email already exists');
});
});
});
```
3. テスト実行 → **失敗を確認**
```bash
npm run test -- --watch tests/unit/services/user.service.test.ts
```
### Step 2: GREEN(実装する)
1. **最小限の実装**で通す
- 完璧を目指さない
- ハードコードでもOK(後でリファクタ)
- テストが通ることだけに集中
2. テスト実行 → **成功