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