vitest

vitest

熱門

Vitest API 與設定參考指南(相容 Jest)—— 涵蓋 vi.* 模擬(mocking)、spy 監聽器、虛擬定時器(fake timers)、程式碼覆蓋率設定、fixtures、快照測試(snapshots)與測試篩選。適用於 Monorepo 中任何與 Vitest API 及設定相關的疑問;若為 Studio 特定的測試策略或元件測試設定,請先參閱 studio-testing 與 studio-mock-api-tests。

11萬星標
1.3萬分支
更新於 2026/8/6
SKILL.md
唯讀
名稱
vitest
描述

Vitest API 與設定參考指南(相容 Jest)—— 涵蓋 vi.* 模擬(mocking)、spy 監聽器、虛擬定時器(fake timers)、程式碼覆蓋率設定、fixtures、快照測試(snapshots)與測試篩選。適用於 Monorepo 中任何與 Vitest API 及設定相關的疑問;若為 Studio 特定的測試策略或元件測試設定,請先參閱 studio-testing 與 studio-mock-api-tests。

Vitest 是由 Vite 驅動的新一代測試框架,開箱即用支援原生 ESM、TypeScript 與 JSX,並提供相容 Jest 的 API。Vitest 與你的 Vite 應用程式共用相同的設定檔、轉換器(transformers)、解析器(resolvers)及外掛(plugins)。

核心特色:

  • 原生 Vite 支援:運用 Vite 的轉換管線,實現類似 HMR 的超快速測試更新
  • 相容 Jest:幾乎可直接無縫替換絕大多數的 Jest 測試套件
  • 智慧 Watch 模式:根據模組關聯圖(module graph),僅重新執行受影響的測試
  • 免設定支援原生 ESM、TypeScript 及 JSX
  • 多執行緒 Worker:支援平行執行測試
  • 內建覆蓋率工具:支援 V8 或 Istanbul
  • 完整的快照測試、Mock 模擬與 Spy 監聽工具

本 Skill 基於 Vitest 3.x,建立時間為 2026-01-28。

Core

主題 說明 參考資料
Configuration Vitest 與 Vite 的設定整合,以及 defineConfig 的使用方式 core-config
CLI 命令列介面(Command line interface)、指令與參數選項 core-cli
Test API test/it 函式,以及 skip、only、concurrent 等修飾符 core-test-api
Describe API 用於測試分組與巢狀測試套件的 describe/suite core-describe
Expect API 斷言機制,包含 toBe、toEqual、匹配器(matchers)與非對稱匹配器 core-expect
Hooks beforeEach、afterEach、beforeAll、afterAll、aroundEach 生命週期鉤子 core-hooks

Features

主題 說明 參考資料
Mocking 透過 vi 工具函式模擬函式、模組、定時器與日期 features-mocking
Snapshots 使用 toMatchSnapshot 與行內快照(inline snapshots)進行快照測試 features-snapshots
Coverage 使用 V8 或 Istanbul 提供者進行程式碼覆蓋率分析 features-coverage
Test Context 測試 Fixtures、context.expect 以及透過 test.extend 自訂 fixture features-context
Concurrency 並行測試(Concurrent tests)、平行執行與分片(sharding) features-concurrency
Filtering 依名稱、檔案比對樣式或標籤篩選測試 features-filtering

Advanced

主題 說明 參考資料
Vi Utilities vi 輔助工具:mock、spyOn、fake timers、hoisted、waitFor advanced-vi
Environments 測試環境設定:node、jsdom、happy-dom、自訂環境 advanced-environments
Type Testing 使用 expectTypeOf 與 assertType 進行型別層級測試 advanced-type-testing
Projects 多專案工作區(Multi-project workspaces),支援各專案獨立設定 advanced-projects