尝试在 Angular13 中引入 Jest

首先

我是22日的文章负责人@neocoronb。
这次我打算在用Angular13创建的工作空间中引入Jest。

环境建设

如果你还没有设置Node的环境,请使用nodebrew或n等版本管理工具进行设置,将Node的版本设置为16.10.0。(只需使用Angular13支持的Node版本即可)
此外,你可以使用npm install -g @angular/cli等命令来设置Angular的环境,请按照你喜欢的方式创建执行环境。如果不确定的话,建议参考官方网站的设置指南。
在使用ng new等命令创建工作空间后,为了确认版本设置是否成功,请执行ng –version来进行检查。
我的环境输出如下所示。

Angular CLI: 13.1.2
Node: 16.10.0
Package Manager: npm 7.24.0
OS: darwin x64

Angular: 13.1.1
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1301.2
@angular-devkit/build-angular   13.1.2
@angular-devkit/core            13.1.2
@angular-devkit/schematics      13.1.2
@angular/cli                    13.1.2
@schematics/angular             13.1.2
rxjs                            7.4.0
typescript                      4.5.4

我們將在以後進行安裝,但這次使用的jest相關版本如下。

"@types/jest": "^27.0.3",
"jest": "^27.4.5",
"jest-preset-angular": "^11.0.1",

关于Jest

Angular默认设置了Jasmine和Karma作为测试工具。Jest是基于Jasmine的库,所以不需要改变编写方式。它执行测试的速度很快,并且非常受欢迎(根据npm趋势)。

我們將立即進行 Jest 環境的搭建,以便能夠使用。

Jest的配置

按照jest-preset-angular的安装步骤进行操作。

首先,我们需要安装Jest和jest-preset-angular。

npm i -D jest @types/jest jest-preset-angular

接下来,我们将创建一个名为jest.config.js的文件,用于描述Jest的配置,并创建一个名为src/jest.ts的文件,用于在执行测试之前进行初始化等操作,并编写import语句。

touch jest.config.js src/jest.ts
import "jest-preset-angular/setup-jest";
require("jest-preset-angular/ngcc-jest-processor");

module.exports = {
  preset: "jest-preset-angular",
  setupFilesAfterEnv: ["<rootDir>/src/jest.ts"],
};

如果不想创建jest.config.js文件,似乎可以通过向package.json中添加以下内容来解决。

{
  "jest": {
    "preset": "jest-preset-angular",
    "setupFilesAfterEnv": ["<rootDir>/jest.ts"]
  }
}

将tsconfig.spec.json的内容更改为以下内容。

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "types": ["jest"]
  },
  "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
}

通过这个,可以创建一个可以执行 Jest 的环境。

为了使Jest通过npm test命令运行,我们将在package.json的scripts字段中进行追加。

"scripts": {
  "ng": "ng",
  "start": "ng serve",
  "build": "ng build",
  "watch": "ng build --watch --configuration development",
  "test": "jest",
},

现在可以使用Jest来执行Angular测试的环境已经准备好了!

创建,编辑后的文件目录结构如下。

  │  
  ├── src
  │    └─jest.ts
  ├── package.json
  ├── tsconfig.app.json
  ├── tsconfig.spec.json
  └── jest.config.js

我后来知道,有一个叫做Jest Angular Schematic的东西。

yarn ng add @briebug/jest-schematic

这样就可以进行安装了。非常方便。

我认为您只需查阅Angular官方参考资料,然后开始实施您想要进行的单元测试。

总结

由于存在非常详尽的参考资料,因此我能够轻松地引入Jest而没有任何问题。
由于我希望尝试实施端到端测试,所以我想尝试使用Cypress等工具。

请列出参考文献。

jest-preset-angular 安装
jest
npm 趋势
使用 Jest 开始!单元测试 第1回
Jest Angular 图表