迁移指南

从 Jest 迁移

Vitest 设计了与 Jest 兼容的 API ,以使从 Jest 的迁移尽可能简单。尽管做出了这些努力,你仍然可能会遇到以下差异:

全局变量作为默认值

Jest 默认启用全局 API。然而 Vitest 没有。你既可以通过 globals 配置选项启用全局 API,也可以更新你的代码以使用来自 vitest 模块的导入。

如果你决定禁用全局 API,请注意像 testing-library 这样的通用库不会运行 auto DOM cleanup

自动模拟

区别于 Jest,在 <root>/__mocks__ 中的模拟模块只有在 vi.mock() 被调用时才会加载。如果你需要它们像在 Jest 中一样,在每个测试中都被模拟,你可以在 setupFiles 中模拟它们。

Jasmine API

Jest 导出各种 jasmine 全局 API (例如 jasmine.any() )。任何此类实例都需要迁移成 Vitest 的对应项

测试环境

如果之前没有设置,Vitest 会像 Jest 一样,把 NODE_ENV 设置为 test。 Vitest 也有一个 JEST_WORKER_ID 的对应项,是 VITEST_WORKER_ID,所以如果你依赖它,不要忘记重命名它。