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,
});Vitest
Vitest 实例需要指定当前的测试模式。它可以是:
test:运行单元测试时。benchmark:运行基准测试时。typecheck:运行类型检查时。
mode
test
测试模式仅会执行 test 或 it 中的函数,并在遇到 bench 时抛出错误。此模式使用配置中的 include 和 exclude 选项来查找测试文件。
benchmark
基准测试模式执行 bench 函数,并在遇到 test 或 it 时抛出错误。此模式使用配置中的 benchmark.include 和 benchmark.exclude 选项来查找基准测试文件。
typecheck
类型检查模式不会 运行 测试。它仅分析类型并给出摘要。此模式使用配置中的 typecheck.include 和 typecheck.exclude 选项来查找要分析的文件。
start
你可以使用 start 方法开始运行测试或基准测试。你可以传递一个字符串数组来过滤要测试的文件。