【发布时间】:2020-11-04 00:51:39
【问题描述】:
我正在尝试在我的 ES6 javascript 项目中使用 jest 创建一个自动模拟。
我在 ubuntu 18.04.5 上使用节点 v15.0.1 和 jest 26.6.0。
我有一个包含以下代码的测试文件:
import RenderBuffer from './renderbuffer.js'
jest.mock('./renderbuffer.js');
beforeEach(() => {
RenderBuffer.mockClear();
});
当我运行测试时,我遇到了以下问题:
ReferenceError: require is not defined
4 |
5 | beforeEach(() => {
> 6 | RenderBuffer.mockClear();
| ^
7 | });
8 |
这个错误让我感到惊讶,因为我没有使用 require 语句。
我的 package.json 配置包含以下内容:
"type": "module",
"main": "src/index.js",
"devDependencies": {
"jest": "^26.5.3",
"jest-canvas-mock": "^2.3.0"
},
"jest": {
"setupFiles": ["jest-canvas-mock"]
},
"scripts": {
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
"test-coverage": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"
}
关于这个问题的根本原因是什么的任何想法?
【问题讨论】:
-
RenderBuffer 导入是否需要在任何地方使用?
-
即使你不使用它,Jest 也会使用。它配置错误。请提供配置。
-
@EstusFlask 我已经添加了我的 package.json 配置。我错了什么配置?
-
很可能,
--experimental-vm-modules。 Jest 中对 ESM 的支持是实验性的。预计会缺少和错误。这包括模块模拟。不要将其用于实际工作。
标签: javascript jestjs es6-modules