跳至内容

节点 API

警告

Vitest 公开了实验性的私有 API。重大更改可能不遵循 SemVer,请在使用时固定 Vitest 的版本。

startVitest

您可以使用其节点 API 开始运行 Vitest 测试。

js
import {  } from 'vitest/node'

const  = await ('test')

await ?.()

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

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

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

如果未启用观察模式,Vitest 将调用 close 方法。

如果启用了观察模式并且终端支持 TTY,Vitest 将注册控制台快捷键。

您可以将过滤器列表作为第二个参数传递。Vitest 将仅运行其文件路径中至少包含一个传递字符串的测试。

此外,您可以使用第三个参数传递 CLI 参数,这将覆盖任何测试配置选项。

或者,您可以将完整的 Vite 配置作为第四个参数传递,这将优先于任何其他用户定义的选项。

createVitest

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

js
import {  } from 'vitest/node'

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

parseCLI

您可以使用此方法解析 CLI 参数。它接受一个字符串(其中参数由单个空格分隔)或一个字符串数组的 CLI 参数,格式与 Vitest CLI 使用的格式相同。它返回一个过滤器和 options,您可以稍后将其传递给 createViteststartVitest 方法。

ts
import {  } from 'vitest/node'

('vitest ./files.ts --coverage --browser=chrome')

Vitest

Vitest 实例需要当前测试模式。它可以是

  • test 在运行运行时测试时
  • benchmark 在运行基准测试时

mode

test

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

benchmark

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

start

您可以使用 start 方法开始运行测试或基准测试。您可以传递一个字符串数组来过滤测试文件。