无法使用打字稿设置玩笑

ope*_*sas 4 typescript jestjs ts-jest

我正在按照此示例为打字稿项目设置一些基本单元测试: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)
Run Code Online (Sandbox Code Playgroud)

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

任何人都可以指出我正确的方向,或提供一个有效的例子吗?

sli*_*wp2 5

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

devDependenciespackage.json

"jest": "^24.8.0",
"ts-jest": "^24.0.2",
"typescript": "^3.5.3"
Run Code Online (Sandbox Code Playgroud)

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

"jest": "^24.8.0",
"ts-jest": "^24.0.2",
"typescript": "^3.5.3"
Run Code Online (Sandbox Code Playgroud)

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


sha*_*awn 5

Jest TypeScript文档涵盖了使用 babel 预处理 TypeScript 文件,并链接到ts-jest.

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

npm install --save-dev ts-jest
Run Code Online (Sandbox Code Playgroud)

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

  "jest": {
    "transform": {
      "^.+\\.tsx?$": "ts-jest"
    },
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "jsx",
      "json"
    ]}
Run Code Online (Sandbox Code Playgroud)

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

$ 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.
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢,问题是 jest.config.ts fiie,jest 只接受 .js 或 .json 配置文件 (2认同)