iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0

第十三日:整合測試出巡,Swagger 登場

一、開場:從 CRUD 到全套驗收

昨天我們還在把 API 升級成「能篩選、能 patch、能對齊文件」的版本。今天,正式進入下一個里程碑:
👉 不再只看單表單元測試,而是跑一個完整的整合測試流程。

同時,也開始準備產品線「必備三寶」:

  • Integration Test:模擬真實 API 呼叫,從頭走到尾。
  • Webhook/Provision API 計劃:未來要接 Teams Bot,不能只靠想像。
  • Swagger + CI pipeline:API 沒文件 = 沒靈魂,CI 沒檢查 = 火葬場。

二、工地現場紀錄

1. 整合測試落地

  • 新增 internal/integration/integration_test.go,模擬 公司 → 使用者 → 專案 → Bot → 目的地 → 通知 全流程。
  • 不只是跑 smoke test,而是 用 Go 撰寫 integration test,確保輸入輸出與 DB 一致。
  • 執行 go test ./...,確認全綠 ✅。

2. Service 層補測

  • 不再只靠 repository,今天補上 service 層單元測試:
    • company_service_test.go
    • user_service_test.go
    • project_service_test.go
    • destination_service_test.go
    • notification_service_test.go
  • 跑完 go test ./...,依舊全綠,心裡終於沒那麼慌。

3. Swagger UI 出巡

  • 嘗試用 Docker 跑 Swagger UI,第一次 port 映射錯誤,http://localhost:8081/ 啥都沒有。
  • -p 8081:8080 改成 -p 8081:7070,重新啟動容器,總算能看到文件頁面。
  • 指令已正式收錄:
    docker run --name openapi-ui -d -p 8081:7070 ...
    

4. CI / Pipeline 初稿

  • 新增 doc/CI_PLAN.md,規劃未來要把 go test ./...swagger validate、lint 全部串到 CI。
  • 目標:每次 commit 不再靠「人工祈禱模式」,而是 pipeline 幫你驗收。

三、今日成果清單

  • 文件
    • doc/INTEGRATION_TEST_PLAN.md
    • doc/API_PLANS.md
    • doc/CI_PLAN.md
  • 程式碼
    • internal/integration/integration_test.go
    • internal/api/services/*_test.go
  • 驗證
    • go test ./... 全綠
    • curl http://localhost:7070/health 回傳 ok
    • Swagger UI 正常顯示

四、心得與反思

今天像是第一次辦「系統健康檢查」:

  • 不只是量血壓(單元測試),而是從頭到腳做全身檢查(整合測試)。
  • 有了 Swagger UI,文件終於從 md 飛到瀏覽器,開發體驗瞬間提升。
  • pipeline 目前還只是計劃書,但至少開始鋪路,不然靠手動重複跑測試,早晚會爆肝。

不足之處:

  • Webhook / Provision API 還只是計劃,還沒實際動工。
  • Swagger 的容器設定還要再整理,不然新人一跑就掉坑。

五、明日計劃

  • 正式開始 Bot Webhook / Provision API 的實作。
  • Swagger 驗證納入 go test 或 Makefile,避免人為失誤。
  • 規劃第一版 CI pipeline:GitHub Actions or GitLab CI。

✍️ Day13 收工感言
今天是「API 工地驗收日」,整合測試跑過、Swagger UI 上線、CI 藍圖出爐。
雖然還只是 prototype,但至少不再是裸奔的 CRUD,而是一個有 測試、有文件、有驗收 的工程專案了。 🚀


上一篇
第十二日:CRUD 升級,全方位 API 工地驗收
下一篇
第十四日:多專家會診,單元測試補到位
系列文
Vibe Code與context engineering來打造個人專屬夥伴14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言