我对TypeScript还是很陌生,我正在尝试Jest(单元测试框架)。 我试图进行一些简单的测试,但出现了 strange 错误。
我使用以下代码在文件夹position.ts
中创建了文件/src
:
export class Position {
constructor(public x: number, public y: number) {}
}
然后在文件夹/tests
中放置一个名为position.test.ts
的文件:
import {Position} from './position';
test('basic', () => {
let p = new Position(1, 2);
expect(p.x).toBe(1);
expect(p.y).toBe(2);
});
我已经在项目根目录中创建了一个名为jest.config.ts
的文件,其内容如下:
module.exports = {
'roots': ['<rootDir>/src'],
'transform': {'^.+\\.tsx?$': 'ts-jest'},
}
我的tsconfig.json
包含:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"outDir": "./dist",
"rootDir": "./",
"strict": true,
"esModuleInterop": true
}
}
当我运行tsc
时,没有错误报告。
当我运行:npx jest
时,出现以下错误:
FAIL tests/position.test.ts
● Test suite failed to run
/home/killkrt/developer/Atomts/tests/position.test.ts:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import { Position } from '../src/position';
^^^^^^
SyntaxError: Cannot use import statement outside a module
我该如何解决?
我想将源代码保存在/src
文件夹中,将测试保存在/tests
中,将 compiled js保留在/dist
答案 0 :(得分:0)
就我而言,当我尝试使用WebStorm中的“运行”选项运行测试时,看到了此错误。
但是当我只是从控制台运行命令时,它就可以工作。
所以原因是-WebStorm默认使用错误的Jest配置文件。我将其更改为指向正确的对象,这为我解决了问题。
答案 1 :(得分:0)
请按照以下步骤操作:
yarn add ts-jest -D
然后在您的jest.config.js
文件中输入以下内容:
module.exports = {
transform: {
'^.+\\.ts?$': 'ts-jest',
},
};