Jest:优雅的前端单元测试框架

发布时间 2023-09-04 15:10:33作者: 会吃鱼的猫123

前言

日常工作的时候,经常听到前端单元测试,但由于工作性质,还没机会写这方面的单元测试,好奇的我,就提前学习一下,在此记录下来。
常见的前端单元测试框架有 jest、mocha、jasmine、karma、tape 等,这里头 mocha 笔者是很熟悉的了,几年前在做 UI 自动化测试、后端接口测试的时候,均有用到,它轻量、灵活,但需要自行接入断言、覆盖率统计等插件。而 jest 则是:
Jest 是一个功能全面的“零配置”测试框架,既集成了各种工具,且无需配置即可使用。
这显而易见相比 mocha 会更容易使用!

其他测试框架 jasmine、karma、tape 等我们根据网友提供的数据:

jest 受欢迎程度遥遥领先,且不说别的,作为学习标的,那是完全没问题的!
附官方文档:https://jestjs.io/docs/getting-started

学习路径

  1. 安装 jest;
  2. 编写业务逻辑代码;
  3. 编写单元测试代码;
  4. 运行单元测试;
  5. 测试报告;
  6. 收集代码覆盖率;
  7. 测试用例钩子(hook);
  8. 用例执行控制;
  9. mock;

1. 安装 jest

 yarn add --dev jest 

安装完成后,我们以官网的例子,快速进行单元测试学习。

2. 编写业务逻辑代码

创建一个 js 文件,如 sum.js;

export function sum(a, b) {
  return a + b;
}

3. 编写单元测试代码;

创建一个 .test.js 文件,如 sum.test.js;

const {sum} = require('./sum');

test('adds 1 + 2 to equal 3',()=>{
	expect(sum(1,2)).toBe(3)
})

4. 运行单元测试

我们可以在 package.json 文件内增加一个命令,如:

"scripts": {
    "test": "jest"
}

接着在命令行执行测试命令:

yarn test

测试结果:

从打印出的信息,可以清楚地看到测试过程和测试结论!而且连断言库都是自带的,不用安装,挺清爽的!
我们可以模拟业务逻辑错误,如修改 sum.js 文件中的代码为:

export function sum(a, b) {
  return a + b + 1;
}

再次执行单元测试:

控制台打印出失败信息,清晰明了!

5. 测试报告

上述执行单元测试的控制台打印,实际上是 jest 提供的 default 报告,如果我们想使用其他报告,改怎么办呢?

这时候就需要用到 jest config 了!
我们以 allure 报告为例:
待完善...