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
方法开始运行测试或基准测试。你可以传递一个字符串数组来过滤要测试的文件。