5

我正在按照这个例子为打字稿项目设置一些基本的单元测试:https ://dev.to/muhajirdev/unit-testing-with-typescript-and-jest-2gln

我有一个main.ts导出isInternalLink功能

和一个main.spec.ts试图测试它的

但我收到以下错误:

C:\data\devel\apps\tmp\jest-typescript\src\main.spec.ts:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import { isInternalLink } from './main.js';
SyntaxError: Unexpected token {
  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:537:17)

这是带有完整示例的公共回购:https ://gitlab.com/opensas/jest-typescript

谁能指出我正确的方向,或提供一个可行的例子?

4

3 回答 3

5

Jest TypeScript文档介绍了使用 babel 预处理 TypeScript 文件,还链接到ts-jest.

要将ts-jest添加到您的项目中,请安装ts-jest

npm install --save-dev ts-jest

并将其添加到您的 package.json 以预处理 TypeScript 文件:

  "jest": {
    "transform": {
      "^.+\\.tsx?$": "ts-jest"
    },
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "jsx",
      "json"
    ]}

在您的项目中执行此操作后,我能够运行测试:

$ npx jest
 PASS  src/main.spec.ts
  ✓ should return false given external link (2ms)
  ✓ should return true given internal link

Test Suites: 1 passed, 1 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        1.096s, estimated 2s
Ran all test suites.
于 2019-09-08T05:36:38.620 回答
3

这是一个演示使用jestjstypescripthttps: //github.com/mrdulin/jest-codelab

devDependenciespackage.json

"jest": "^24.8.0",
"ts-jest": "^24.0.2",
"typescript": "^3.5.3"

在项目的根路径中,创建jest.config.js

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node'
};

这就是所有设置。您可以在此处找到文档并按照 4 个步骤操作:https ://github.com/kulshekhar/ts-jest#getting-started

于 2019-09-08T04:58:37.713 回答
0

问题是我的配置文件是jest.config.ts,尝试后:

npx jest --config jest.config.ts
Usage: jest.js [--config=<pathToConfigFile>] [TestPathPattern]
[...]
The --config option requires a JSON string literal, or a file path with a .js or .json extension.
Example usage: jest --config ./jest.config.js

我刚刚重命名jest.config.tsjest.config.js,一切顺利...

--

我可以通过 @shadowspan 和 @slideshowp2 帮助解决它,谢谢!

于 2019-09-09T02:32:36.613 回答