Skip to content
On this page

Node API

警告

Vitest 暴露了实验性的私有 API。由于可能不遵循语义化版本规范(SemVer),因此可能会出现不兼容的更改,请在使用 Vitest 时锁定版本。

启动 Vitest

你可以使用 Vitest 的 Node API 开始运行 Vitest 测试:

js
import { startVitest } from 'vitest/node'

const vitest = await startVitest('test', ['tests/run-only.test.ts'])

await vitest?.close()
import { startVitest } from 'vitest/node'

const vitest = await startVitest('test', ['tests/run-only.test.ts'])

await vitest?.close()

如果测试可以启动,则 startVitest 函数返回 Vitest 实例。 如果出现以下情况之一,则返回 undefined

  • Vitest 未找到 "vite" 包 (通常与 Vitest 一起安装)
  • 如果启用了 coverage,并且运行模式为 "test",但并未安装 "coverage" 包(@vitest/coverage-c8@vitest/coverage-istanbul
  • 如果未安装环境包 (jsdom/happy-dom/@edge-runtime/vm)

如果在运行期间返回 undefined 或者测试失败, Vitest 会将 process.exitCode 设置为 1

如果未启用监视模式,Vitest 将会调用 close 方法。

如果启用了监视模式并且终端支持 TTY, 则 Vitest 会注册控制台快捷键。

创建 Vitest

你可以使用 createVitest 函数创建自己的 Vitest 实例. 它返回与 startVitest 相同的 Vitest 实例, 但不会启动测试,也不会验证已安装的包。

js
import { createVitest } from 'vitest/node'

const vitest = await createVitest('test', {
  watch: false,
})
import { createVitest } from 'vitest/node'

const vitest = await createVitest('test', {
  watch: false,
})

Vitest

Vitest 实例需要当前的测试模式。它可以是以下之一:

  • 运行运行时测试时为 test
  • 运行基准测试时为 benchmark
  • 运行类型测试时为 typecheck

模式

test

测试模式仅会调用 testit 中的函数,并在遇到 bench 时抛出错误。此模式使用配置中的 includeexclude 选项查找测试文件。

benchmark

基准测试模式会调用 bench 函数,并在遇到 testit 时抛出错误。此模式使用配置中的 benchmark.includebenchmark.exclude 选项查找基准测试文件。

typecheck

类型检查模式不会**运行**测试。它仅分析类型并提供摘要信息。此模式使用配置中的 typecheck.includetypecheck.exclude 选项查找要分析的文件。

start

你可以使用 start 方法运行测试或者基准测试。您还可以传递一个字符串数组以筛选测试文件。

Released under the MIT License.