【发布时间】:2021-12-06 14:21:41
【问题描述】:
我正在学习使用 Jest 测试我的 JavaScript。我有一个基本项目是这样设置的:
/
/src
myClass.js
/tests
myClass.test.js
package.json
代码如下所示:
myClass.js
export class MyClass {
constructor() {
this.result = null;
}
calculate() {
this.result = 1;
return this.result;
}
}
myClass.test.js
import { MyClass } from '../src/myClass';
test('Calculate', () => {
let myObject = new MyClass();
let result = myObject.calculate();
expect(result).toBe(1);
});
package.json
{
"name": "sample-project",
"version": "0.0.1",
"type":"module",
"scripts": {
"dev": "vite",
"build": "vite build",
"serve": "vite preview",
"test": "jest"
},
"dependencies": {
"vue": "^3.2.16",
"vue-router": "^4.0.11"
},
"devDependencies": {
"@vitejs/plugin-vue": "^1.9.3",
"jest": "^27.3.1",
"vite": "^2.6.4",
"vite-plugin-html": "^2.1.1",
"vite-plugin-singlefile": "^0.5.1"
}
}
当我使用 npm run test 运行测试时,它只执行 jest,我收到一条错误消息:SyntaxError: Cannot use import statement outside a module。
我做错了什么?如何从 Jest 测试 MyClass?
【问题讨论】:
-
不应该是
../src/MyClass吗? -
好的,我在本地复制了这个。你的 Node.js 版本是什么?
-
呃,原来 Jest 本身也不完全支持模块。我正试图以最小的努力来解决它。编辑:我确实让它在 14.1.0 中使用
NODE_OPTIONS=--experimental-vm-modules npx jest工作,但它有点难看。据说有更好的方法来做到这一点。
标签: javascript jestjs