代码转换
非官方测试版翻译
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
Jest 会以 JavaScript 形式运行项目中的代码,但如果你使用了 Node 默认不支持的语法(如 JSX、TypeScript 或 Vue 模板),就需要将这些代码转换为纯 JavaScript,类似于为浏览器构建时需要进行的操作。
Jest 通过 transform 配置选项来支持此功能。
转换器(transformer)是提供源代码文件转换方法的模块。例如,如果你想在模块或测试中使用 Node 尚未支持的新语言特性,可以接入代码预处理器,将未来版本的 JavaScript 转译(transpile)为当前可用的版本。
Jest 会缓存转换结果,并根据多种因素(如被转换文件的来源和配置变更)尝试使缓存失效。
默认配置
Jest 默认内置了一个转换器 – babel-jest。它会加载项目的 Babel 配置,并转换所有 匹配 /\.[jt]sx?$/ 正则表达式的文件(即任何 .js、.jsx、.ts 或 .tsx 文件)。此外,babel-jest 还会注入 ES 模块模拟 中提到的模拟提升(mock hoisting)所需的 Babel 插件。
备注
默认情况下,babel-jest 包含 babel-preset-jest。可以通过向 babel-jest 指定 excludeJestPreset: true 来禁用此行为。请注意,这也会停止提升 jest.mock,可能导致测试失败。
"transform": {
"\\.[jt]sx?$": ["babel-jest", { "excludeJestPreset": true }],
}
技巧
如需同时使用其他代码预处理器,请务必显式包含默认的 babel-jest 转换器:
"transform": {
"\\.[jt]sx?$": "babel-jest",
"\\.css$": "some-css-transformer",
}