Skip to content
Vitest 3
Main Navigation 指南 & API配置瀏覽器模式進階 API
3.2.0
2.1.9
1.6.1
0.34.6

繁體中文

English
简体中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

繁體中文

English
简体中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

外觀

Sidebar Navigation

簡介

為何選擇 Vitest

快速入門

功能特色

配置參考

API

測試 API 參考

模擬函式

Vi

expect

expectTypeOf

assert

assertType

指南

命令列介面

測試篩選

測試專案

報告器

程式碼覆蓋率

快照

模擬(Mocking)

平行化

型別測試

Vitest UI

內聯測試

測試上下文

測試註解

測試環境

擴展匹配器

IDE 整合

偵錯

常見錯誤

遷移指南

遷移到 Vitest 3.0

從 Jest 遷移

效能

測試效能分析

提升效能

瀏覽器模式

進階 API

與其他測試執行器的比較

本頁導覽

內聯測試 ​

Vitest 提供一種在原始碼中與實作並行執行測試的方式,類似於 Rust 的模組測試。

這使得測試與實作共享相同的閉包環境,並且能夠在不匯出的情況下測試私有狀態。同時,它也為開發帶來更緊密的回饋循環。

WARNING

本指南說明如何在原始碼中撰寫測試。如果您需要在單獨的測試檔案中撰寫測試,請遵循「撰寫測試」指南。

設定 ​

首先,在原始碼檔案的末尾放置一個 if (import.meta.vitest) 程式碼區塊,並在其中撰寫一些測試。例如:

ts
// 實作
export function add(...args: number[]) {
  return args.reduce((a, b) => a + b, 0);
}

// 原始碼內測試集
if (import.meta.vitest) {
  const { it, expect } = import.meta.vitest;
  it('add', () => {
    expect(add()).toBe(0);
    expect(add(1)).toBe(1);
    expect(add(1, 2, 3)).toBe(6);
  });
}

更新 Vitest 的 includeSource 配置,以包含 src/ 目錄下的檔案:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'], 
  },
});

然後您就可以開始測試了!

bash
$ npx vitest

生產環境建置 ​

對於生產環境建置,您需要在配置檔中設置 define 選項,讓打包器執行死碼消除。例如,在 Vite 中:

ts
/// <reference types="vitest/config" />

import { defineConfig } from 'vite'

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'],
  },
  define: { 
    'import.meta.vitest': 'undefined', 
  }, 
})

其他打包器 ​

unbuild
ts
import { defineBuildConfig } from 'unbuild'

export default defineBuildConfig({
  replace: { 
    'import.meta.vitest': 'undefined', 
  }, 
  // other options
})

了解更多:unbuild

Rollup
ts
import replace from '@rollup/plugin-replace'

export default {
  plugins: [
    replace({ 
      'import.meta.vitest': 'undefined', 
    }) 
  ],
  // other options
}

了解更多:Rollup

TypeScript ​

為了獲得 import.meta.vitest 的 TypeScript 支援,請將 vitest/importMeta 添加到您的 tsconfig.json:

json
{
  "compilerOptions": {
    "types": [
      "vitest/importMeta"
    ]
  }
}

參考 examples/in-source-test 以獲取完整的範例。

注意事項 ​

此功能對於以下情況可能很有用:

  • 用於小型範圍的函數或工具的單元測試
  • 原型設計
  • 內聯斷言

對於更複雜的測試(例如元件或 E2E 測試),建議改用單獨的測試檔案。

Pager
上一頁Vitest UI
下一頁測試上下文

以 MIT 授權條款 發布。

版權所有 (c) 2021-Present Vitest Team

https://vitest.dev/guide/in-source

以 MIT 授權條款 發布。

版權所有 (c) 2021-Present Vitest Team