26
Re:Nuxt 100 天練習曲
Day 26

為專案建立防護網 (測試基礎)

Day 26·自動化測試·品質保證

寫程式就像蓋房子,蓋好後總要做一下壓力測試和安全檢查,確保它穩固可靠。在軟體開發中,這個過程就叫做「測試」。

自動化測試能幫助我們在未來新增或修改功能時,快速驗證沒有不小心弄壞原本好的地方,是打造高品質專案不可或缺的一環。

1. 兩種主要的測試方式

在 Nuxt 中,我們主要會接觸到兩種測試方式,讓我們用造車來比喻:

🚗

單元測試 (Unit Testing)

目的

檢查汽車的單一零件是否正常運作。

比喻

「這個輪胎能不能轉?」、「這個方向盤有沒有反應?」

Nuxt

測試一個獨立的元件 (<MyButton />) 或一個函式 (useCounter()) 的功能是否正確。

🏎️

端到端測試 (End-to-End Testing, E2E)

目的

把整台車組裝好,找一個真人司機實際上路開開看,模擬完整的使用流程

比喻

從「發動引擎」到「踩油門前進」,再到「成功煞車停下」。

Nuxt

模擬使用者打開瀏覽器,點擊「關於我們」連結,然後驗證頁面是否成功跳轉並顯示出「關於我們」的標題。

2. 準備我們的測試工具箱

Nuxt 官方提供了一個名為 @nuxt/test-utils 的工具庫,它大大簡化了在 Nuxt 中撰寫測試的複雜度。

要開始測試,我們需要先安裝一些必要的工具。請打開您的終端機,執行以下指令:

安裝測試工具
npm install -D @nuxt/test-utils vitest @vue/test-utils happy-dom playwright-core

您不需要立刻理解每一個工具的用途,只需要知道它們分別扮演著:

@nuxt/test-utils

Nuxt 官方測試工具

vitest

測試的執行與管理工具 (測試執行器)

@vue/test-utils

測試 Vue 元件的核心工具

happy-dom

在沒有真實瀏覽器的環境下,模擬出一個瀏覽器環境

playwright-core

用來控制真實瀏覽器進行 E2E 測試的工具

3. 設定測試環境

最後,我們需要在專案根目錄建立一個 vitest.config.ts 檔案,這是 vitest 的設定檔。

vitest.config.ts
// vitest.config.ts
import { defineVitestConfig } from '@nuxt/test-utils/config'

export default defineVitestConfig({
  // 您可以在這裡加入客製化的 Vitest 設定
  // 但通常情況下,預設值就已經很夠用了
})

簡單設定:這個設定檔非常簡潔,因為 @nuxt/test-utils 已經為我們處理好了大部分的配置。

為什麼需要測試?

測試的好處

提早發現錯誤

確保功能正確性

重構時的安全保障

提高程式碼品質

減少維護成本

測試金字塔

單元測試 (最多)
測試個別函式、元件
整合測試 (中等)
測試多個元件協作
E2E 測試 (最少)
測試完整用戶流程

今日總結

今天我們建立了測試的基礎觀念,並安裝好了所有需要的工具。這就像是我們在動工前,先把所有的圖紙和工具都準備齊全。

理解了測試的兩大類型

單元測試(測零件)和端到端測試(測全車)的區別

安裝了完整的測試工具

以 vitest 和 @nuxt/test-utils 為核心的測試工具鏈

建立了測試環境設定

透過 vitest.config.ts 設定檔案,準備好測試環境

下一步預告

明天,我們將開始進行第一種類型的測試:單元測試,學習如何單獨測試一個元件,確保它正常運作。