Node API
WARNING
Vitest 暴露了实验性的私有 API。重大变更可能不遵循语义化版本规范,使用时请锁定 Vitest 的版本。
startVitest
你可以通过 Node API 运行 Vitest 测试:
import { startVitest } from 'vitest/node';
const vitest = await startVitest('test');
await vitest?.close();如果测试能够运行,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 实例,但不会运行测试或验证已安装的包。
import { createVitest } from 'vitest/node';
const vitest = await createVitest('test', {
watch: false,
});parseCLI
你可以使用此方法来解析 CLI 参数。它接受一个字符串(其中参数由单个空格分隔)或一个字符串数组,该数组包含与 Vitest CLI 使用的格式相同的 CLI 参数。它返回一个过滤器和 options,你可以稍后将它们传递给 createVitest 或 startVitest 方法。
import { parseCLI } from 'vitest/node';
parseCLI('vitest ./files.ts --coverage --browser=chrome');Vitest
Vitest 实例需要指定当前的测试模式。它可以是:
test:运行单元测试时。benchmark:运行基准测试时。
mode
test
测试模式仅会执行 test 或 it 中的函数,并在遇到 bench 时抛出错误。此模式使用配置中的 include 和 exclude 选项来查找测试文件。
benchmark
基准测试模式执行 bench 函数,并在遇到 test 或 it 时抛出错误。此模式使用配置中的 benchmark.include 和 benchmark.exclude 选项来查找基准测试文件。
start
你可以使用 start 方法开始运行测试或基准测试。你可以传递一个字符串数组来过滤要测试的文件。