Initial commit
This commit is contained in:
170
commands/tf-red.md
Normal file
170
commands/tf-red.md
Normal file
@@ -0,0 +1,170 @@
|
||||
---
|
||||
description: 執行TDD的Red階段。建立會失敗的測試,明確定義應實作的功能。
|
||||
---
|
||||
|
||||
# TDD Red階段(建立失敗的測試)
|
||||
|
||||
執行TDD的Red階段,建立會失敗的測試。
|
||||
|
||||
**【功能名】**:{{feature_name}}
|
||||
|
||||
## 事前準備
|
||||
|
||||
請確認以下文件已存在:
|
||||
```
|
||||
docs/tdd/{feature_name}/requirements.md
|
||||
docs/tdd/{feature_name}/testcases.md
|
||||
```
|
||||
|
||||
## Red 階段目標
|
||||
|
||||
建立會失敗的測試,明確定義功能的行為。
|
||||
|
||||
**重要原則:**
|
||||
- 測試必須是會失敗的(因為功能尚未實作)
|
||||
- 測試要清楚定義預期的行為
|
||||
- 測試要容易理解和維護
|
||||
|
||||
## 測試程式碼要求
|
||||
|
||||
### 1. 測試檔案結構
|
||||
|
||||
```javascript
|
||||
// 測試檔案:__tests__/{feature_name}.test.js
|
||||
|
||||
describe('{feature_name}', () => {
|
||||
// 【測試群組說明】:此群組測試的功能範圍
|
||||
|
||||
test('測試案例名稱', () => {
|
||||
// 【測試目的】:說明此測試要驗證什麼
|
||||
// 【測試內容】:具體測試的處理
|
||||
// 【預期行為】:正常情況下的結果
|
||||
|
||||
// Given - 準備測試資料
|
||||
// 【測試資料準備】:說明為何準備這些資料
|
||||
const input = testData;
|
||||
|
||||
// When - 執行測試
|
||||
// 【執行功能】:呼叫要測試的功能
|
||||
const result = functionToTest(input);
|
||||
|
||||
// Then - 驗證結果
|
||||
// 【驗證結果】:確認符合預期
|
||||
expect(result).toBe(expectedValue);
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
### 2. 繁體中文註解規範
|
||||
|
||||
每個測試必須包含:
|
||||
|
||||
**測試開始的註解:**
|
||||
```javascript
|
||||
// 【測試目的】:此測試要確認什麼功能
|
||||
// 【測試內容】:具體要測試的處理
|
||||
// 【預期行為】:正常情況下應該得到的結果
|
||||
```
|
||||
|
||||
**Given(準備)階段:**
|
||||
```javascript
|
||||
// 【測試資料準備】:說明準備這些資料的原因
|
||||
// 【初始條件】:測試執行前的狀態
|
||||
```
|
||||
|
||||
**When(執行)階段:**
|
||||
```javascript
|
||||
// 【執行功能】:說明呼叫哪個功能
|
||||
// 【處理內容】:這個功能做什麼處理
|
||||
```
|
||||
|
||||
**Then(驗證)階段:**
|
||||
```javascript
|
||||
// 【驗證結果】:要確認什麼結果
|
||||
// 【預期值】:為什麼這是正確的結果
|
||||
```
|
||||
|
||||
**每個 expect 的註解:**
|
||||
```javascript
|
||||
expect(result.value).toBe(10); // 【確認】:數值正確為 10
|
||||
expect(result.status).toBe('success'); // 【確認】:狀態為成功
|
||||
```
|
||||
|
||||
## 實作步驟
|
||||
|
||||
1. **選擇測試案例**:
|
||||
- 從 testcases.md 選擇要實作的測試
|
||||
- 建議從最簡單的正常系統測試開始
|
||||
|
||||
2. **建立測試檔案**:
|
||||
- 在適當位置建立測試檔案
|
||||
- 設定測試框架和相關 import
|
||||
|
||||
3. **撰寫測試程式碼**:
|
||||
- 按照 Given-When-Then 結構
|
||||
- 加入完整的繁體中文註解
|
||||
- 確保測試會失敗(功能尚未實作)
|
||||
|
||||
4. **執行測試**:
|
||||
- 確認測試會失敗
|
||||
- 失敗訊息要清楚易懂
|
||||
|
||||
5. **記錄到 memo**:
|
||||
- 更新 docs/tdd/{feature_name}/memo.md
|
||||
- 記錄 Red 階段的進度
|
||||
|
||||
## memo.md 格式
|
||||
|
||||
```markdown
|
||||
# {feature_name} TDD 開發記錄
|
||||
|
||||
## Red 階段(建立失敗的測試)
|
||||
|
||||
### 日期
|
||||
{當前日期時間}
|
||||
|
||||
### 已建立的測試
|
||||
- 測試案例 1:{測試名稱}
|
||||
- 測試案例 2:{測試名稱}
|
||||
...
|
||||
|
||||
### 測試檔案位置
|
||||
{測試檔案路徑}
|
||||
|
||||
### 預期的失敗
|
||||
{說明為什麼這些測試會失敗}
|
||||
|
||||
### 下一步
|
||||
進入 Green 階段,實作功能讓測試通過。
|
||||
```
|
||||
|
||||
## 測試執行命令
|
||||
|
||||
根據使用的測試框架:
|
||||
|
||||
**Jest/Vitest:**
|
||||
```bash
|
||||
npm test
|
||||
# 或
|
||||
npm test -- {test_file_name}
|
||||
```
|
||||
|
||||
**其他框架:**
|
||||
請根據專案設定執行測試命令。
|
||||
|
||||
## 品質檢查
|
||||
|
||||
完成後請確認:
|
||||
- ✅ 測試會失敗(因為功能未實作)
|
||||
- ✅ 失敗訊息清楚易懂
|
||||
- ✅ 測試有完整的繁體中文註解
|
||||
- ✅ 測試結構清晰(Given-When-Then)
|
||||
- ✅ 已記錄到 memo.md
|
||||
|
||||
## 下一步
|
||||
|
||||
Red 階段完成後,執行:
|
||||
```
|
||||
/tf-green
|
||||
```
|
||||
開始實作功能讓測試通過(Green 階段)。
|
||||
Reference in New Issue
Block a user