目录

🌖 单元测试 Jest 的使用

  • Jest 官网 (opens new window)。它是 Facebook 出品的一个测试框架,相对其他测试框架,它的一大特点就是内置了常用的测试工具,比如自带断言、测试覆盖率工具,实现了开箱即用。

# 安装使用 Jest

由于 typescript-library-starter 已经内置 jest 。可以使用以下命令重新安装更新到新的版本:

$ npm i jest
1

# Jest 配置

点击查看

package.json 中的 jest 相关配置:

"jest": {
  "transform": {
    ".(ts|tsx)": "ts-jest"
  },
  "testEnvironment": "node",
  "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
  "moduleFileExtensions": [
    "ts",
    "tsx",
    "js"
  ],
  "coveragePathIgnorePatterns": [
    "/node_modules/",
    "/test/"
  ],
  "coverageThreshold": {
    "global": {
      "branches": 90,
      "functions": 95,
      "lines": 95,
      "statements": 95
    }
  },
  "collectCoverageFrom": [
    "src/*.{js,ts}"
  ]
},
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

相关配置的含义:

  • transform :转换器配置。这里表示的就是使用 ts-jest 工具把 .ts.tsx 文件内容转换成 JavaScript,因为使用 TypeScript 编写测试代码,而 Node.js 是不能直接支持 TypeScript 的,所以需要配置转换器。

  • testEnvironment :测试环境。表示它是一个类浏览器的测试环境,可以使用浏览器环境中的一些 API。

  • testRegex :测试文件的正则表达式。包含的文件格式。

  • moduleFileExtensions :模块文件扩展名,当去引入一个模块并没有指定扩展名的时候,它会依次尝试去添加这些扩展名去找你引入的模块文件。

  • coverageThreshold :测试覆盖率的阈值设定。当测试覆盖率达不到阈值的时候,测试会失败。

  • collectCoverageFrom :收集指定文件的测试覆盖率 (即使你没为这些文件编写测试),它的值为 glob patterns 类型。

额外配置:

"setupFilesAfterEnv": [
  "<rootDir>/test/boot.ts"
]
1
2
3
  • setupFilesAfterEnv :测试框架安装后立即执行的代码文件列表。表示每次跑具体测试代码之前会先运行 <rootDir>/test/boot.ts 中的代码, <rootDir> 表示当前项目的根目录。
📢 上次更新: 2022/09/02, 10:18:16