Jest:JavaScript 测试这件事,交给它就行

Jest 在 GitHub 上拿到了 45,430 Star。

Facebook 搞出来的 JavaScript 测试框架,现在由社区维护。开箱即用,不用东拼西凑测试工具链,装上就能跑。

正文顶部截图

1、它解决什么问题

写 JavaScript 代码的人迟早要面对测试这件事。自己拼 Mocha + Chai + Sinon + Istanbul,光配环境就半天,换个项目又得重来一遍。

Jest 把这些东西打包好了。测试运行器、断言库、覆盖率报告、Mock 工具,一个包全带。装完 npm install --save-dev jest,写个 sum.test.js,跑 npm test,出结果。

2、核心能力

即时反馈的 Watch 模式。改了哪个文件,只跑跟它相关的测试,不用每次全量跑。项目大了以后这个差距很明显。

快照测试。把组件渲染结果、API 返回的大对象存成快照文件,下次跑的时候自动对比。UI 组件的回归测试基本靠它。

自动 Mock。模块依赖自动拦截,不用手动写 Mock 函数。jest.mock('./module') 一行搞定。

README区域截图

3、跟主流工具的配合

Jest 对 Babel、webpack、Vite、Parcel、TypeScript 都有现成的适配方案。

用 Babel 转译的话,加个 @babel/preset-env,Jest 自动走 babel-jest 处理。TypeScript 项目装个 @babel/preset-typescript 也行,想做类型检查就换 ts-jest

webpack 和 Vite 的项目各有专门的配置指南,照着文档改几行就行。

4、上手过程

npm install --save-dev jest

写一个被测函数:

// sum.js
function sum(a, b) {
  return a + b;
}
module.exports = sum;

写一个测试文件:

// sum.test.js
const sum = require('./sum');

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

package.json 里加一行:

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

npm test,看到 PASS 就算跑通了。整个过程不超过五分钟。

5、什么项目适合用

前端、后端、全栈的 JavaScript/TypeScript 项目都能用。React、Vue、Node.js 的社区里 Jest 的采用率都很高。如果团队里测试工具链还没统一,Jest 是一个低风险的起点,不需要额外的编排工具,也不需要写一堆胶水代码。

社区里 Jest 的采用率都很高。如果团队里测试工具链还没统一,Jest 是一个低风险的起点,不需要额外的编排工具,也不需要写一堆胶水代码。

更多推荐