
Jest 是一个令人愉快的 JavaScript 测试框架,专注于简洁明快。Jest 拥有良好的文档,只需很少的配置,并能根据你的需求进行扩展。它能确保任何 JavaScript 代码的正确性。它为你提供了易于理解、熟悉且功能丰富的 API 来编写测试用例,并快速地反馈结果。
Jest
是一个令人愉快的 JavaScript
测试框架,专注于简洁明快。Jest
拥有良好的文档,只需很少的配置,并能根据你的需求进行扩展。它能确保任何 JavaScript
代码的正确性。它为你提供了易于理解、熟悉且功能丰富的 API
来编写测试用例,并快速地反馈结果。
一、jest优势
- 零配置:
Jest
的目标是在大部分 JavaScript
项目上实现开箱即用, 无需配置。
- 快照: 能够轻松追踪大型对象的测试。 快照可以与测试代码放在一起,也可以集成进代码行内。
- 隔离: 测试程序拥有自己独立的进程 以最大限度地提高性能。
- 优秀的 api: 从
it
到 expect - Jest
将整个工具包放在同一个 地方。好书写、好维护、非常方便。
二、安装
| npm i -g jest |
| # or |
| cnpm i -g jest |
| # or |
| yarn global add jest |
| npm i -D jest |
| # or |
| cnpm i -D jest |
| # or |
| yarn add --dev jest |
三、配置使用
- 初始化项目,生成
package.json
文件和 jest
自定义配置文件
| # 初始化,生成 package.json 文件 |
| npm init -y |
| |
| # 创建一个 jest 基础配置文件 |
| jest --init |
- 配置
scripts
脚本命令。
| { |
| "scripts": { |
| "test": "jest", |
| "test:config": "jest test_dir --notify --config=config.json ", |
| "test:output": "jest test_dir --outputFile=test.report.json --json" |
| } |
| } |
命令解释:
| # 全局搜索 test.js 后缀文件执行单元测试 |
| npm run test |
| |
| # 使用 config.json 自定义配置文件进行单元测试 |
| npm run test:config |
| |
| # 将测试结果输出保存到 json 文件 |
| npm run test:output |
四、example
- 创建一个
demo.js
文件,编写功能函数并 exports
导出。
| |
| |
| function sum(a, b) { |
| return a + b; |
| } |
| |
| function sort(arr=[]) { |
| return arr.sort() |
| } |
| |
| module.exports = { |
| sum, |
| sort, |
| } |
- 创建一个
__tests__
文件夹,并生成 demo.test.js
单元测试文件。
| |
| |
| const { sum, sort } = require('../demo.js') |
| |
| test('测试sum方法:10 + 20 = 30', () => { |
| expect(sum(10, 10)).toBe(30); |
| }) |
| |
| describe('测试 sort 方法功能', ()=>{ |
| it('正常测试', ()=>{ |
| const data = sort([1,3,5,2,4]); |
| expect(data).toEqual([1,2,3,4,5]); |
| }) |
| it('不传值', ()=>{ |
| const data = sort(); |
| expect(data).toEqual([]); |
| }) |
| }) |
- 使用
npm test
执行单元测试。
- 输出
| PASS ../demo.test.js |
| √ 测试sum方法:10 + 20 = 30 (3 ms) |
| 测试 sort 方法功能 |
| √ 正常测试 (1 ms) |
| √ 不传值 (1 ms) |
| |
| Test Suites: 1 passed, 1 total |
| Tests: 3 passed, 3 total |
| Snapshots: 0 total |
| Time: 0.976 s, estimated 2 s |
| Ran all test suites matching /.\\demo.test.js/i. |
sum
和 sort
方法单元测试通过。
五、jest总结
- 当使用
jest
未指定测试的目录或具体文件时,会默认查找 __tests__
文件夹下的 js|ts
文件和以 test.js
为后缀的文件。
- 建议所有的单元测试文件集中存放到单独的
__tests__
目录下,与业务功能代码隔离。
- 推荐使用以功能方法名 +
.test.js
的形式来命名对应的测试文件,例如:一个求和功能方法所在的文件为 sum.js
,对应的单元测试文件就是 sum.test.js
。
- 常用的判断类型:
toBe
(值类型)、toEqual
(引用类型)、toBeNull
、toBeDefined
、toBeTruthy
(true)、toBeFalsy
(false)、toBeCloseTo
(约等于)、toMatch
(匹配包含)、toThrow
、not
修饰符( not.toBe
)。
describe
搭配 it
相当于形成了一组测试,适用于一个功能方法对应了多个测试用例。
参考文档:
- https://www.jestjs.cn/docs/getting-started
欢迎访问:天问博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了