新闻中心

j*ascript测试如何进行_如何使用Jest编写单元测试?

2025-12-13
浏览次数:
返回列表
Jest 是 J*aScript 单元测试最常用、上手最友好的方案,开箱即用,自带断言库、Mock 工具、覆盖率报告和测试运行器;支持 ES Module,需配置 jest.config.js;通过 test() 和 expect().matcher 编写测试,可模拟依赖、验证异步逻辑。

javascript测试如何进行_如何使用jest编写单元测试?

J*aScript 单元测试最常用、上手最友好的方案就是 Jest。它开箱即用,自带断言库、Mock 工具、覆盖率报告和测试运行器,不需要额外配置就能跑起来。

安装与基础配置

在项目根目录下执行:

npm install --s*e-dev jest

package.jsonscripts 中添加:

"test": "jest",<br>"test:watch": "jest --watch"

如果项目使用 ES Module(比如有 type: "module"),需在 jest.config.js 中启用 ESM 支持(Jest 29+ 原生支持):

export default {<br>  testEnvironment: 'node',<br>  extensionsToTreatAsEsm: ['.ts', '.js'],<br>  transform: {<br>    '^.+\.js$': ['babel-jest', { presets: ['@babel/preset-env'] }],<br>  },<br>};

编写第一个测试文件

Jest 默认匹配 *.test.js*.spec.js 文件。比如你有一个 math.js

// math.js<br>export const add = (a, b) => a + b;<br>export const multiply = (a, b) => a * b;

对应写一个 math.test.js

// math.test.js<br>import { add, multiply } from './math.js';<br><br>test('add returns correct sum', () => {<br>  expect(add(2, 3)).toBe(5);<br>});<br><br>test('multiply returns correct product', () => {<br>  expect(multiply(4, 5)).toBe(20);<br>});

运行 npm test 就能看到通过结果。

拾贝 拾贝

一键同步微信读书所有笔记和划线,并在新标签页回顾

拾贝 186 查看详情 拾贝

常用断言与测试技巧

Jest 提供丰富的 expect().matcher 方法,覆盖大多数验证场景:

  • toBe():严格相等(适合原始值)
  • toEqual():深度相等(适合对象、数组)
  • toBeTruthy() / toBeFalsy():检查真值/假值
  • toThrow():验证是否抛出错误
  • toH*eBeenCalledTimes():配合 jest.fn() 检查函数调用次数

例如测试异步函数:

test('fetches user data', async () => {<br>  const userData = await fetchUser(123);<br>  expect(userData.name).toBe('Alice');<br>});

或者用 await expect(...).resolves 更安全地捕获 Promise 成功结果。

模拟依赖(Mocking)

测试时经常要隔离外部影响,比如 API 调用、定时器或第三方库。Jest 内置强大 Mock 功能:

  • jest.fn() 创建模拟函数,可记录调用、返回固定值或抛错
  • jest.mock('./module') 自动 mock 模块(会自动替换其所有导出)
  • jest.useFakeTimers() 替换 setTimeout 等,让时间控制可控

例子:mock 一个发请求的函数

import { fetchData } from './api.js';<br><br>jest.mock('./api.js'); // 自动 mock<br><br>test('shows loading then data', () => {<br>  fetchData.mockResolvedValue({ id: 1, name: 'Bob' });<br>  // ...触发组件逻辑<br>  expect(fetchData).toH*eBeenCalledTimes(1);<br>});

基本上就这些。Jest 不复杂但容易忽略细节,比如默认不支持顶层 await、ESM 导入路径别名需要额外配置。从简单函数开始写,逐步覆盖分支逻辑和副作用,测试就会自然成为开发节奏的一部分。

以上就是j*ascript测试如何进行_如何使用Jest编写单元测试?的详细内容,更多请关注其它相关文章!


# 自带  # 德阳seo优化公司 排名  # 网站建设代码基础  # 专业网站建设优惠吗  # seo每天做什么好  # 精准营销推广询问q火27星舒心  # 益阳专业网站建设  # 湛江租车网站建设  # 伊犁seo网络推广费用  # 家乡美食推广与营销方案  # 优化网站如何获取流量  # 拖放  # 即用  # 最常用  # javascript  # 怎么做  # 数据处理  # 就能  # 如何使用  # 拾贝  # 单元测试  # ai  # 工具  # npm  # node  # json  # js  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性  解决 Express.js 中 PUT 请求密码修改失败的路由配置指南  在VS Code中配置和运行Dart程序的完整步骤  Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换  在J*a中如何隐藏复杂性_使用门面模式组织对象交互  qq游戏大厅官方下载_qq游戏免费下载安装入口  Yandex免登录网页版地址 Yandex搜索引擎官方访问入口  优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题  韩剧圈正版入口页面_韩剧圈官网登录链接  绝地鸭卫平a核爆刀流玩法攻略  将HTML Canvas内容转换为可上传的图像文件(File对象)  C++如何比较两个字符串_C++ string compare函数与操作符对比  优化Django表单:提交验证失败后保留用户输入  学习通网页版快速入口 学习通官网网页版直接打开  三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】  ArchiveofOurOwn小说阅读-ArchiveofOurOwn同人作品访问链接  荣耀Play7T运行卡顿解决_荣耀Play7T性能优化  支付宝解绑银行卡步骤_支付宝如何解除绑定银行卡  mcjs网页版流畅运行 mcjs低配电脑畅玩入口  C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果  Python中高效访问嵌套字典与列表中的键值对  php源码怎么看淘宝客系统_看php源码淘宝客系统技巧  深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量  抖音网页版平台入口 抖音网页版官网在线访问教程  Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址  天猫2025双十一0点秒杀攻略 天猫爆款抢购时间  AO3中文官网链接_AO3网页版稳定镜像站  利用Bokeh CustomJS动态控制DataTable列可见性  html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】  《GTA6》开发画面疑似泄露!这次可不是AI了  Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】  Tabulator表格中精确实现日期时间排序的指南  《铁拳8》黑皮辣妹新实机:元气满满的18岁少女!  高德地图公交到站提醒失败如何解决 高德提醒权限设置  J*aScript中管理异步API调用:确保操作顺序与数据一致性  PHP URL参数传递与500错误调试指南  解决 MongoDB 聚合查询中对象数组 _id 匹配问题  Yandex免登录官网入口_俄罗斯Yandex搜索引擎直达链接  Python大型XML文件高效流式解析教程  C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程  QQ邮箱网页版快速登录 QQ邮箱邮箱账号官方入口地址  TikTok评论显示延迟如何处理 TikTok评论刷新优化方法  随机参数递归函数的基准调用次数与时间复杂度探究  深入理解J*a合成构造器:何时以及为何阻止其生成  神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正  163邮箱注册官网 免费申请163个人邮箱  Vue.js 图片显示异常排查:理解应用挂载范围与DOM ID唯一性  QQ邮箱登录平台入口 QQ邮箱网页版邮箱官方入口  蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台  俄罗斯方块最新版入口 俄罗斯方块在线玩官网入口 

搜索