Mock
模擬物件 / 假替身
01你是不是遇到這個 / THE SYMPTOM
我想測一段會打第三方 API(或寄信、刷卡)的程式,但測試時不想真的去呼叫它——又慢、要網路、還可能真的扣到錢。想用一個「假的」頂替那個外部東西,並指定它該回傳什麼。
↑ 如果你點頭了,你要的關鍵字就是 Mock。
02這是什麼 / DEFINITION
在測試中用一個可控的假物件取代真實的外部依賴(API、資料庫、時間、寄信服務),你可以指定它回傳什麼、也能檢查它「有沒有被呼叫、用什麼參數呼叫」。
03什麼時候用 / WHEN TO USE
被測程式會碰到外部世界(網路請求、檔案、付款、現在時間、隨機數)而你想隔離它、讓測試穩定又快、不產生真實副作用時。
04怎麼跟 AI 說 / HOW TO ASK
直接複製這句、貼進 Claude Code / Cursor / Copilot / ChatGPT:
幫我在這個測試裡 mock 掉 fetch,讓它回傳假的使用者資料,這樣測試不會真的去打外部 API,並驗證 fetch 有用正確的 URL 被呼叫一次。
05常見坑 / WATCH OUT
⚠ mock / stub / spy / fake 常被混用:粗略說 stub 只負責「回傳預設值」、spy 負責「記錄有沒有被呼叫」、mock 兩者都做。對 AI 工具直接講「mock」通常它聽得懂、會挑合適的;過度 mock 也是反模式(測到的是假的、不是真行為)。
06相關的詞 / RELATED