当前位置: 首页 > news >正文

Jest 测试框架:构建可靠的测试体系

Jest 测试框架:构建可靠的测试体系

什么是 Jest?

Jest 是 Facebook 开发的 JavaScript 测试框架,具有简洁的 API 和强大的功能。

Jest 的特点

特性说明
零配置开箱即用
快照测试自动生成和比对快照
代码覆盖率内置覆盖率报告
Mock 功能强大的 mocking 能力

基础测试

// 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); });

匹配器

test('常见匹配器', () => { // 相等性 expect(2 + 2).toBe(4); expect({ name: 'John' }).toEqual({ name: 'John' }); // 真值 expect(null).toBeNull(); expect(undefined).toBeUndefined(); expect(1).toBeTruthy(); // 数字 expect(2).toBeGreaterThan(1); expect(1).toBeLessThan(2); // 字符串 expect('hello').toMatch(/ello/); // 数组 expect([1, 2, 3]).toContain(2); });

异步测试

// Promise test('异步测试 - Promise', () => { expect.assertions(1); return fetchData().then(data => { expect(data).toBe('peanut butter'); }); }); // Async/Await test('异步测试 - Async/Await', async () => { expect.assertions(1); const data = await fetchData(); expect(data).toBe('peanut butter'); });

Mock 函数

const mockFn = jest.fn(); mockFn('hello'); expect(mockFn).toHaveBeenCalled(); expect(mockFn).toHaveBeenCalledWith('hello'); // Mock 返回值 const mockReturn = jest.fn().mockReturnValue('mocked value'); expect(mockReturn()).toBe('mocked value');

Mock 模块

// __mocks__/axios.js module.exports = { get: jest.fn().mockResolvedValue({ data: 'mocked data' }) }; // api.test.js jest.mock('axios'); const axios = require('axios'); test('mock 模块', async () => { await fetchData(); expect(axios.get).toHaveBeenCalledWith('/api/data'); });

快照测试

test('快照测试', () => { const component = renderer.create(<Button />).toJSON(); expect(component).toMatchSnapshot(); });

测试配置

// jest.config.js module.exports = { testEnvironment: 'jsdom', moduleNameMapper: { '\\.(css|less)$': '<rootDir>/__mocks__/styleMock.js' }, setupFilesAfterEnv: ['<rootDir>/setupTests.js'], coverageThreshold: { global: { branches: 80, functions: 80, lines: 80, statements: 80 } } };

测试钩子

beforeAll(() => { console.log('所有测试开始前'); }); beforeEach(() => { console.log('每个测试开始前'); }); afterEach(() => { console.log('每个测试结束后'); }); afterAll(() => { console.log('所有测试结束后'); });

代码覆盖率

# 生成覆盖率报告 npx jest --coverage # 查看覆盖率报告 open coverage/lcov-report/index.html

实战案例

// userService.test.js const UserService = require('./userService'); describe('UserService', () => { let service; beforeEach(() => { service = new UserService(); }); describe('getUser', () => { it('应该返回用户信息', async () => { const user = await service.getUser(1); expect(user.id).toBe(1); expect(user.name).toBe('John'); }); it('应该抛出错误当用户不存在', async () => { await expect(service.getUser(999)).rejects.toThrow('User not found'); }); }); });

总结

Jest 是一个功能强大的测试框架:

  1. 易于使用:简洁的 API
  2. 功能丰富:快照、mock、覆盖率
  3. 生态完善:与 React、Vue 等框架无缝集成
  4. 社区活跃:大量插件和资源

编写高质量的测试,让你的代码更加可靠。

http://www.jsqmd.com/news/879581/

相关文章:

  • 自动化图表:用 AI 指令将测试执行结果秒变炫酷的 Excel 漏斗图/折线图
  • 2026年5月红河河口地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 基于注意力机制的科学数据压缩:层次化架构与误差边界保证
  • 遗传算法融合线性规划:超参数调优的高效双层优化策略
  • 有哪些免费好用的在线论文排版工具值得推荐?
  • 2026年5月抚顺新宾地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 2026年5月大庆肇源地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 量子几何机器学习:灰盒模型在量子门合成中的原理与实践
  • Python之ansimagic包语法、参数和实际应用案例
  • AI Native 产品差异化:Agent 技术打造独特竞争优势的策略
  • 2026年5月德阳地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 2026年5月汉中汉台地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 2026年5月抚顺新抚地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • DLSS Swapper:免费高效的DLSS智能管理解决方案
  • 2026年5月红河红河地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 2026年5月汉中留坝地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 2026年5月湖州南浔地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • CSS Container Queries:响应式设计的新突破
  • AdapFair:基于归一化流与Wasserstein距离的动态公平性框架解析
  • 在ubuntu20.04上快速配置taotoken的python开发环境
  • 2026年5月常德安乡地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 战略分类中从在线学习错误边界到PAC保证的理论转换与算法实现
  • 不关Secure Boot!用mokutil永久解决Linux内核模块签名问题(附自动化脚本)
  • 2026年5月德阳广汉地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • Jupyter notebook 最简安装方法
  • 2026年5月郴州永兴地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 2026年5月北京地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 2026年5月百色隆林地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 五金回收
  • 技术博客写作:分享知识,提升影响力
  • 2026年5月海南省东方地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收