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

快速入门

特性

配置 Vitest

API

测试 API 参考

模拟函数

Vi

expect

expectTypeOf

assert

assertType

指南

命令行界面

测试过滤

测试项目

报告器

覆盖率

快照

模拟

并行

类型测试

Vitest UI

源内测试

测试上下文

测试注解

测试环境

扩展匹配器

IDE 集成

调试

常见错误

迁移指南

迁移到 Vitest 3.0

从 Jest 迁移

性能

分析测试性能

性能优化

浏览器模式

高级 API

与其他测试运行器的比较

页面导航

源内测试 ​

Vitest 提供了一种在源代码中与实现代码一同运行测试的方式,类似于 Rust 的模块测试。

这使得测试可以与实现共享相同的作用域,从而在不导出的情况下测试私有状态。同时,这也为开发提供了更快的反馈循环。

WARNING

本指南介绍如何在源代码中编写测试。如果您需要在单独的测试文件中编写测试,请遵循 "编写测试" 指南。

配置 ​

首先,在源文件末尾添加一个 if (import.meta.vitest) 块,并在其中编写一些测试。例如:

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

// in-source test suites
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 ​

为了让 TypeScript 支持 import.meta.vitest,请将 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