How Jest Works(Jest是如何工作的)
1. 什么是Jest
Jest是由Facebook(Meta)开发的一个Javascript测试框架。支持多种前端框架,比如Babel, TypeScript, Node, React, Angular, Vue等等。它的特点是快速,简单,可扩展。
2. 基于Nx框架的Jest配置
我们目前的项目基于Nx框架,其实Nx本身对于Jest已经支持的很好了,几乎不用做太多的配置,但是本文仍以Angular为例,看看如何配置Jest。
当我们使用Nx创建一个Angular项目时,会自动创建一个jest.config.ts
文件,内容如下:
1 | /* eslint-disable */ |
在transform
一节,我们看到了jest-preset-angular
,这个是Angular官方提供的一个Jest预设,它会自动帮我们处理Angular的一些特殊文件,比如.ts
, .html
, .svg
等等。如果我们不使用Angular,而是使用React,那么我们需要使用jest-preset-react
,如果是Vue,那么我们需要使用vue-jest
。如果我们使用的是Nx,那么我们可以使用@nrwl/jest
,它会自动帮我们处理Nx的一些特殊文件,比如.ts
, .html
, .svg
等等。
为什么需要transform
呢?因为Jest只能处理JavaScript,对于TypeScript/JSX等高级的文件格式,我们不许先将其转换为JavaScript,然后再交给Jest处理。
该transform
块的含义是,对于所有以.ts
, .mjs
, .js
, .html
结尾的文件,都使用jest-preset-angular
来处理。
如果transform
配置不正确,就会出现如下错误:
1 | Jest encountered an unexpected token |
How jest parse config and execute tests?
Jest是如何解析配置文件,并执行测试的呢?我们可以通过--debug
参数来查看Jest的执行过程。
To be continue…