可以轻松看懂的前端单元测试

321 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情 >>

如何保证自己写的代码或者工具函数能够经得起考验呢?边界、空值、溢出都能hold住?一个提高代码质量的方法就是进行测试,更具体地说是单元测试。本文将介绍单元测试的概念,前端单元测试框架,前端流行单元测试框架Jest的使用,欢迎阅读学习。

1.单元测试的基本概念

单元测试是指检查和验证软件中最小的可测试单元。在JS中单元是指一个函数。单元测试能够保证代码质量,单元测试四大特性如下:

  • 必要性:编译时可定位错误,弥补JS缺少类型检查的特性
  • 准确性:通过多方面验证代码可行程度,减少错误发生率
  • 自动性:预先编写测试用例,测试用例交由脚本自动运行
  • 回归性:避免代码出现回归化,可随时随地运行测试用例

2.常用的单元测试框架

目前主流的前端单元测试框架有Mocha,Jasmine, Jest ,三者之间简要的对比如下:

很多大型前端项目例如vue,vite等都会接入单元测试,下图展示了构建工具vite使用jest作为单元测试框架。

jest简单易用、高性能、易配置、多功能的特点使其成为一款优秀的前端单元测试框架。因此本文下面重点介绍jest的使用。

3.Jest的安装与使用

3.1 jest的安装

全局安装jest:

npm i jest -g

在项目中安装Jest:

npm i -D jest @types/jest

初始化Jest

jest --init

根目录下已经生成了一个叫 jest.config.js 的配置文件,我们看到里面有非常多的配置项。

下图介绍了常用配置项:

3.2 使用jest编写测试用例

在项目根目录下新建test文件夹用于存放测试用例文件,如下图所示:

在上图所示的测试用例中有几个重要的函数,分别是expec、test和toBe。expect表示期望得到的运行结果;test表示测试结果是否通过预期;另外toBe是匹配器。更多关于jest的使用可以查看文档

上述测试用例写完之后,我们在控制台运行命令 npm run test , 发现报错如下:

这是因为jest不支持es的模块化方案,解决方案如下:

3.3 支持es导入导出

安装转换插件

npm install --save-dev @babel/plugin-transform-modules-commonjs

配置.babelrc文件

{
  "env": {
    "test": {
      "plugins": ["@babel/plugin-transform-modules-commonjs"]
    }
  }
}

经过以上配置之后,再执行npm run test ,运行结果如下:

说明单元测试执行成功了。

4.参考资料

掘金小册:从0到1落地前端工程化

掘金小册: 深入浅出TypeScript:从基础知识到类型编程

jest单元测试错误解决

jest运行报错解决方案