# 電商多重折扣的 TDD Steps ## Step 1: 建立基礎建設 (Base Case) **Prompt:** > 請幫我寫一個 JavaScript (Jest) 測試檔案來驗證以下邏輯,還不用寫實作。 > **邏輯:** 一般會員,無優惠券時,輸入金額等於輸出金額。 ## Step 2: 實作會員折扣 (VIP Logic) * **目標:** 驗證 VIP 9 折邏輯。 **Prompt:** > 不更改既有程式的情況下,請幫我寫一個 JavaScript (Jest) 測試檔案來驗證以下邏輯,還不用寫實作。 > **邏輯:** VIP 會員,無優惠券時,輸入金額的 9 折等於輸出金額。 ## Step 3: 實作優惠券折扣 (Coupon Logic) * **目標:** 驗證優惠券折抵邏輯。 **Prompt:** > 不更改既有程式的情況下,請幫我寫一個 JavaScript (Jest) 測試檔案來驗證以下邏輯,還不用寫實作。 > **邏輯:** 一般會員,有優惠券時,輸入金額減去優惠卷上的折扣金額等於輸出金額。 ## Step 4: 驗證混合邏輯與運算順序 (Integration & Priority) * **目標:** 確保先打折再扣款 (防止 `(1200-100)*0.9` 的錯誤邏輯)。 **Prompt:** > 不更改既有程式的情況下,請幫我寫一個 JavaScript (Jest) 測試檔案來驗證以下邏輯,還不用寫實作。 > **邏輯:** VIP 會員,有優惠券時,輸入金額先乘 9 折再減去優惠卷上的折扣金額等於輸出金額。 ## Step 5: 處理邊界狀況 (Edge Case) * **目標:** 防止負數金額。 **Prompt:** > 不更改既有程式的情況下,請幫我寫一個 JavaScript (Jest) 測試檔案來驗證以下邏輯,還不用寫實作。 > **邏輯:** 判斷輸出金額,當金額為負數時輸出為 0。 --- ## Next : 擴充功能 **目標:** 擴充業務規則。 **Prompt:** > 不更改既有程式的情況下,加入新判斷邏輯:「優惠券不能用於 3C 產品」。 --- ## 一個錯誤的案例 **目標:** 故意寫壞程式 **Prompt:** > 加入新判斷邏輯:「優惠券讓所有輸出金額變成0」。