typescript - 无法使用 typescript 设置 Jest

标签 typescript jestjs ts-jest

我正在按照此示例为 typescript 项目设置一些基本单元测试: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)

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

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

最佳答案

Jest TypeScript documentation涵盖使用 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.

关于typescript - 无法使用 typescript 设置 Jest ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57839008/

相关文章:

unit-testing - 如何使用 Jest 和 enzyme 测试正在使用其他微前端组件的一个微前端组件

reactjs - 如何将 react-typescript className 制作成数组

node.js - 如何修改使用 TypeScript 构建的 npm 包

javascript - 如何正确测试 Vuex?

vue.js - 使用 RouterLinkStub 进行 Vue 快照测试不会按预期呈现 anchor

node.js - 火存储 : Document parent name lacks "/"

javascript - 使用 Jest 的待办事项功能

typescript - fp-ts 和 Jest : ergonomic tests for Option and Either?

Angular Material2 日期选择器 - 动态格式化

javascript - 指定 jest 测试文件目录