以前,写完一段代码我也是直接调用或者实例化一下,发现过了就把测试相关部分删了。今年的不幸与坎坷使我有很长一段时间去思考人生,不想将就了,鲁棒健壮的程序,开发和测试应该是分得很开的,于是我选择jest去做单元测试这件事。
为什么要做单元测试
在开始之前,我们先思考这样一个问题,我们为什么要做单元测试?
不扯犊子直接说吧,第一点,用数据、用茫茫多的测试用例去告诉使用者,你的程序是多么鲁棒健壮;第二点,把它作为一种素养去培养吧,当你按照一系列规范去做事,那么你做出来的东西,我想是有品质在的。
jest的安装
在确保你的电脑装有node环境的情况下,我们通过mkdir jest-study && cd jest-study来初始化项目,然后我们通过npm init -y初始化npm环境。
执行npm i jest babel-jest @babel/core @babel/preset-env 命令安装相应的依赖包,因为后面的例子是基于ES Module的语法编写的,所有需要安装babel进行语法转义。当然你也可以选择直接用CommonJS的写法,node天然支持的。
jest的相关配置
package.json中相关scripts
这里笔者罗列了常用的通用的一些关于jest的脚本,后面测试结果会陆续补充一些测试脚本,以上的脚本都编写在package.json文件下的scripts脚本下面。
通用写法
“test”: “jest” : 这个比较傻瓜式,当执行npm run test这条命令是会去对test目录下的所有文件进行相应的jest测试。
“test:help”: “jest --help”: 顾名思义,如果你不想全局安装jest,又想看看到底有哪些cli命令的话,就它了。
“test:debug”: “jest --debug”: 顾名思义,debug啊。
“test:verbose”: “jest --verbose”: 以层级显示地方式在控制台展示测试结果。
“test:noCache”: “jest --no-cache”: 顾名思义,就是设置有没有缓存,有缓存的话会快点。
“test:init”: “jest --init”: 执行这句就是在根目录创建一个jest.config.js文件,它在创建的时候有很多选择项给你的。
“test:caculator”: “jest ./test/caculator.test.js”: 单文件测试。
“test:caculator:watch”: “jest ./test/caculator.test.js --watch”: 单文件监视测试
“test:watchAll”: “jest --watchAll”: 监视所有文件改动,测试相应的测试。
大致基础类的脚本测试就总结到这里,接下来我们看下jest.config.js的相关配置。
jest.config.js中相关配置
里面配置的参数太多了,有些配置了以后就可以不再package.json文件下写相应的脚本,这里笔者阉割一部分,列举最常见的几个。
module.exports = {
// Automatically clear mock calls and instances between every test
clearMocks: true,
// The directory where Jest should output its coverage files
coverageDirectory: “coverage”,
// The test environment that will be