当尝试在 Jest 测试中使用 ES modules 时,你可能会遇到以下错误:
SyntaxError: Cannot use import statement outside a module
这是因为 Jest 默认不支持 ES modules。然而,我们可以通过配置 Jest,让它支持 ES modules。
配置 Jest
首先,我们需要安装 @babel/preset-env
和 babel-jest
。
npm install --save-dev @babel/preset-env babel-jest
然后,在项目根目录创建一个 .babelrc
文件,内容如下:
-- -------------------- ---- ------- - ---------- - --------------------- - ---------- - ------- ---- - -- - -
这将启用 @babel/preset-env
,并将其目标设置为 Node.js。
接下来,在 Jest 的配置文件 (jest.config.js
) 中,加入以下代码:
module.exports = { ...其他配置信息, transform: { "^.+\\.js$": "babel-jest", }, };
指定 Jest 在处理 .js
文件时使用 babel-jest
进行转换。
现在,我们就可以在 Jest 测试中使用 ES modules 了。
示例
下面是一个使用 ES modules 的 Jest 测试示例。在这个例子中,我们将使用一个简单的 ES module,它定义了一个将两个数字相加的函数。
// sum.js export function add(a, b) { return a + b; }
// sum.test.js import { add } from "./sum"; test("测试 add 函数", () => { expect(add(1, 2)).toBe(3); });
现在,运行 Jest 测试。如果一切顺利,你应该会看到测试通过的消息。如果你仍然遇到报错,请确保你已按上述方式配置好 Jest。
总结
在 Jest 测试中使用 ES modules 可能会让你遇到困难。然而,通过简单的配置,你就可以让 Jest 支持 ES modules。这不仅可以帮助你编写更好的测试,也可以让你更有效地使用最新的 JavaScript 特性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647c9932968c7c53b0798845