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

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

Jest 测试框架构建可靠的测试体系什么是 JestJest 是 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 是一个功能强大的测试框架易于使用简洁的 API功能丰富快照、mock、覆盖率生态完善与 React、Vue 等框架无缝集成社区活跃大量插件和资源编写高质量的测试让你的代码更加可靠。
http://www.gsyq.cn/news/1371825.html

相关文章:

  • iOS 26.5越狱终极指南:安全解锁iPhone隐藏功能与高级定制方案
  • 纯野生的冬虫夏草品牌无添加
  • 国内口碑好的透明化三维重构厂家
  • 2026年5月河池东兰地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 【算法分析与设计】第3篇:递归方程的建立与求解方法
  • 2026年5月贵港平南地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 2026年5月海南省陵水地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 中小团队如何利用多模型聚合平台优化 AI 应用开发成本
  • 单晶多晶的电子衍射标定
  • 2026年5月北海铁山港地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 3分钟搞定!Windows电脑直接安装安卓应用的终极解决方案
  • OpenAI Assistant API vs 开源框架:创业者该如何选择技术栈?
  • 多模态AI Agent架构:如何无缝融合文本、图像与行动?
  • 宁波采购商必看!2026宁波发电机出租租赁哪家好?5月最新靠谱实测排行:江北/镇海/北仑/鄞州/奉化/宁海/象山/慈溪/余姚5家销售公司推荐!附避踩坑验收要点 - 奋斗者888
  • 统信UOS/麒麟KYLINOS下,三种禁用U盘的方法哪个更适合你?
  • DeepSeek总结的将 Rust Delta Kernel 集成到 ClickHouse
  • 别再熬夜写论文!这7款AI神器1小时搞定,文献真实可查! - 麟书学长
  • 在Ubuntu 22.04上从零部署nnUNet_v2:一个医学影像研究生的踩坑与填坑实录
  • 林志玲退文策院聘书,台湾大骂“中国玲”
  • 别再只盯着任务管理器了!用Perfmon监控Windows性能,这5个隐藏计数器才是关键
  • 通过Taotoken快速为现有项目增加Claude模型调用能力
  • 小微团队如何利用Taotoken管理多个项目的AI成本
  • 5个高效模组管理技巧:打造完美的XCOM 2游戏体验
  • GetQzonehistory:永久保存QQ空间记忆的终极免费解决方案
  • 2026 年 5 月上海黄浦区装修公司 5 家口碑标杆推荐 - 品牌智鉴榜
  • 3分钟搞定GitHub中文界面:终极汉化插件使用指南
  • JMeter并发与持续性压测:从瞬时吞吐到系统韧性的工程实践
  • DeepSeek对话上下文崩塌真相:如何用4层状态保鲜机制将对话连贯性提升至92.7%?
  • 2026年热式气体质量流量计国产品牌综合实力排行榜与技术分析报告 - 水质仪表品牌排行榜
  • 长文档摘要准确率暴跌37%?DeepSeek上下文压缩策略失效真相(内部benchmark泄露版)