用打字稿配置笑话

时间:2019-10-06 20:52:33

标签: typescript jestjs

我对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

2 个答案:

答案 0 :(得分:0)

就我而言,当我尝试使用WebStorm中的“运行”选项运行测试时,看到了此错误。

但是当我只是从控制台运行命令时,它就可以工作。

所以原因是-WebStorm默认使用错误的Jest配置文件。我将其更改为指向正确的对象,这为我解决了问题。

答案 1 :(得分:0)

请按照以下步骤操作:

yarn add ts-jest -D

然后在您的jest.config.js文件中输入以下内容:

module.exports = {
  transform: {
    '^.+\\.ts?$': 'ts-jest',
  },
};