掌握 Jest 配置文件:优化单元测试的灵活性与可维护性

引言

在现代软件开发中,单元测试是确保代码质量和稳定性的关键步骤。Jest 是一个广泛使用的 JavaScript 测试框架,提供了丰富的配置选项来优化测试过程。通过配置文件,开发者可以更灵活地控制测试环境,确保测试的可靠性和可维护性。本文将详细介绍 Jest 配置文件的生成方法及其常见配置项,并通过实际示例展示其在不同场景中的应用。

生成配置文件

当需要对 Jest 进行大量配置时,可以生成一个配置文件。生成配置文件的命令如下:

npx jest --init

运行上述命令后,Jest 会引导你完成配置文件的生成过程。生成的配置文件通常位于项目的根目录下,文件名为 jest.config.jsjest.config.ts,具体取决于你的项目类型。
生成配置文件如下图所示:

image-20230424092507341

常见配置项
收集测试覆盖率

collectCoverage 配置项用于收集并显示测试覆盖率,包含每个文件中每种类型的代码(语句、分支、函数和行)的测试覆盖率。

jest.config.js配置如下:

module.exports = {collectCoverage: true,
};

启用 collectCoverage 后,Jest 会在测试完成后生成一个覆盖率报告。报告中包含如下信息:

  • % Stmts:包含语句的百分比,即被测试覆盖的语句占总语句数的比例。
  • % Branch:包含分支的百分比,即被测试覆盖的分支占总分支数的比例。
  • % Funcs:包含函数的百分比,即被测试覆盖的函数占总函数数的比例。
  • % Lines:包含行的百分比,即被测试覆盖的行占总行数的比例。
  • Uncovered Line #s:未被测试覆盖的行号。

例如,生成的覆盖率报告如下所示:

覆盖率报告

从上面的测试报告中可以看出,tools.js 文件中的 sumsub 函数的测试没有被覆盖到,因为我们在测试时替换了这些函数的实现。

设置代码覆盖率阈值

当 collectCoverage 设置为 true 之后,还可以设置 coverageThreshold 代码覆盖率的阀值。当覆盖率低于设定的阈值时,测试将失败。

module.exports = {collectCoverage: true,coverageThreshold: {global: {branches: 90,functions: 90,lines: 90,statements: 90,},},
};

另外在项目根目录下,Jest 会生成一个 coverage 目录,里面包含各种格式(XML、JSON、HTML)的测试报告。这些报告的目的是方便你通过不同的工具进行读取和分析。

例如,HTML 版本的测试报告如下所示:

HTML 测试报告

指定测试文件匹配规则

testMatch 配置项用于指定 Jest 应该运行哪些测试文件。默认情况下,Jest 会查找 .test.js.spec.js 结尾的文件。

module.exports = {testMatch: ["**/test/**/*.[jt]s?(x)",],
};
指定模块文件扩展名

moduleFileExtensions 配置项用于指定 Jest 查找测试文件时应该搜索哪些文件扩展名。

module.exports = {moduleFileExtensions: ["js", "jsx", "ts", "tsx", "json", "node"],
};
在测试前运行特定文件

setupFilesAfterEnv 配置项用于指定 Jest 在运行测试之前应该运行哪些文件。这些文件通常用于初始化测试环境,例如设置全局变量或加载第三方库。

module.exports = {setupFilesAfterEnv: ['<rootDir>/src/setupTests.js'],
};

在执行每个测试套件(文件)之前,Jest 会先执行 setupTests.js 文件。例如,setupTests.js 文件可以包含如下内容:

// setupTests.js
global.customVariable = 'This is a custom variable';
总结

Jest 配置文件是优化单元测试的重要工具,通过合理的配置,可以显著提升测试的灵活性和可维护性。以下是配置文件的一些常见应用场景:

  1. 收集测试覆盖率:通过 collectCoverage 配置项收集并显示测试覆盖率,帮助开发者了解代码的测试覆盖情况。
  2. 设置代码覆盖率阈值:通过 coverageThreshold 配置项设置代码覆盖率的阈值,确保代码达到一定的测试覆盖率。
  3. 指定测试文件匹配规则:通过 testMatch 配置项指定 Jest 应该运行哪些测试文件,灵活控制测试范围。
  4. 指定模块文件扩展名:通过 moduleFileExtensions 配置项指定 Jest 查找测试文件时应该搜索哪些文件扩展名,支持多种文件类型。
  5. 在测试前运行特定文件:通过 setupFilesAfterEnv 配置项指定 Jest 在运行测试之前应该运行哪些文件,初始化测试环境。

总之,使用 Jest 的配置文件,可以帮助开发者更灵活地控制测试环境,确保测试的可靠性和可维护性。希望本文的介绍和示例能帮助你在实际开发中更好地应用这一强大工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/2974.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

网络:IP分片和组装

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言16位标识&#xff0c;3位标志&#xff0c;13位片偏移分片组装总结 前言 对于IP分片和组装的总结 当一个IP数据报的大小超过网络的MTU(最…

Node.js:Express 中间件 CORS 跨域资源共享

Node.js&#xff1a;Express 中间件 & CORS 中间件全局中间件局部中间件分类错误级中间件内置中间件 CORS原理预检请求 中间件 中间件是不直接接收请求&#xff0c;也不直接发送响应&#xff0c;而是在这之间处理一个中间过程的组件。 当一个请求到来&#xff0c;会经过多…

【VScode】中文版ChatGPT编程工具-CodeMoss!教程+示例+快捷键

文章目录 1. 多模型选择2. 编辑快捷键3. 历史记录收藏 CodeMoss使用教程1. 安装CodeMoss插件2. 配置AI模型3. 使用快捷键4. 进行代码优化与解释5. 收藏历史记录 总结与展望 在当今快速发展的编程世界中&#xff0c;开发者们面临着越来越多的挑战。如何提高编程效率&#xff0c;…

LabVIEW适合开发的软件

LabVIEW作为一种图形化编程环境&#xff0c;主要用于测试、测量和控制系统的开发。以下是LabVIEW在不同应用场景中的适用性和优势。 一、测试与测量系统 LabVIEW在测试与测量系统中的应用广泛&#xff0c;是工程测试领域的主流工具之一。利用其强大的数据采集与处理功能&…

命令模式(Command)

1 意图 将一个请求封装为一个对象&#xff0c;从而使得可以用不同的请求对客户进行参数化;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 2 结构 Command 声明执行操作的接口。ConcreteCommand 将一个接收者对象绑定于一个动作;调用接收者相应的操作&#xff0c…

Linux 线程概念

一. 线程的基本概念 线程是进程内的一个执行单元&#xff0c;它是调度和执行的基本单位。 1.1 Linux中的线程 在Linux系统中&#xff0c;在CPU眼中&#xff0c;看到的PCB都要比传统的进程更加轻量化。 1.2 线程的优点 创建一个新线程的代价要比创建一个新进程小得多。与进…

Qt聊天室项目

目录 项目要求 项目背景 技术分析 架构设计 服务器架构 模块划分 模块之间的交互 客户端架构 模块划分 模块之间交互 项目展示 项目实现 服务器 ui server.pro dialog.h dialog.cpp 客户端 ui cient.pro dialog.h dialog.cpp 打包步骤不做演示 视频演示 项目…

node.js模块化分析

什么是Node.js模块化 Node.js中的模块化‌是指将一个大文件拆分成独立且相互依赖的多个小模块。每个JS文件被视为一个独立的模块&#xff0c;模块之间是互相不可见的。如果一个模块需要使用另一个模块&#xff0c;则需要使用指定的语法来引入该模块&#xff0c;并且只能使用模块…

sql练习专场(一) (1-5)

这是总结的一些sql题目&#xff0c;共25道题&#xff0c;每个博客会写5道题 第一题 这道题需要找出连续活跃3天以上的用户&#xff0c;其中每个用户每天可以连续登录多次。 create table sql1_1(uid string,dt string );insert into sql1_1 values(A,2023-10-01),(A,2023…

自动化立体仓库:详细设计方案

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 这份文件是关于自动化立体仓库设计方案的详细介绍&#xff0c;包括了自动化立体仓库的重要性、特点、设计程序、机械部分设计方案、系统硬件设计、系统软件设计以及系统调试等关键部分…

windows运行ffmpeg的脚本报错:av_ts2str、av_ts2timestr、av_err2str => E0029 C4576

问题描述 我目前的环境是&#xff1a; 编辑器&#xff1a; Microsoft Visual Studio Community 2022 (64 位) 运行的脚本是ffmpeg自带的remux样例&#xff0c;只不过我想用c语言执行这个样例。在执行的过程中报错如下图&#xff1a; C4576 后跟初始值设定项列表的带圆括…

CentOS 文件系统扩容与缩容

一、 概述 理解Linux文件系统的管理&#xff0c;需要了解以下的一张图&#xff1a; 一般使用LVM (Logical Volume Manager) 管理磁盘存储&#xff0c;该工具允许用户更灵活地分配和管理存储空间。主要有以下几个概念&#xff1a; PV&#xff08;Physical Volume&#xff0c;物…

Linux系统使用第三方邮件客户端发送邮件

文章目录 安装第三方邮件客户端&#xff08;s-nail&#xff09;S-nail的简单介绍重要的特性差异 配置邮件服务配置文件 (以QQ邮箱为例)获取QQ邮箱授权码获取QQ服务器证书使用 OpenSSL 获取 QQ 邮箱服务器的证书安装OpenSSL连接到 QQ 邮箱的 SMTP 服务器并下载证书保存证书验证证…

家常菜点餐|基于java和小程序的家庭大厨家常菜点餐系统设计与实现(源码+数据库+文档)

家常菜点餐系统 目录 基于java和小程序的家庭大厨家常菜系统设计与实现 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&am…

利士策分享,青年暴富难守,因何在?

利士策分享&#xff0c;青年暴富难守&#xff0c;因何在? 在人生的长河中&#xff0c;有些人似乎被命运特别眷顾&#xff0c;在年轻之时便轻易地获得了财富。 然而&#xff0c;令人遗憾的是&#xff0c;这些早年得志、财富易得的人&#xff0c;往往难以长久地守住这份来之不…

Echarts环形图引线设置

直接上图吧 直接上代码吧 let labelArr [直接访问, 邮件营销, 联盟广告, 视频广告, 搜索引擎]; let valueArr [{ value: 335, name: 直接访问 },{ value: 310, name: 邮件营销 },{ value: 234, name: 联盟广告 },{ value: 135, name: 视频广告 },{ value: 154, name: 搜索引…

Java8->Java19的初步探索

导读 最近网上开始了大量的关于Java19的讨论&#xff0c;我也想着用了Java8这么久该接受一点新的东西了&#xff0c;于是便开始研究了起来 Java 19 Java19是一个免费版本。下面是JDK19的支持图 image.png &#xff08;来源&#xff1a; https://www.bilibili.com/video/BV1V84…

软件设计师-上午题-15 计算机网络(5分)

计算机网络题号一般为66-70题&#xff0c;分值一般为5分。 目录 1 网络设备 1.1 真题 2 协议簇 2.1 真题 3 TCP和UDP 3.1 真题 4 SMTP和POP3 4.1 真题 5 ARP 5.1 真题 6 DHCP 6.1 真题 7 URL 7.1 真题 8 浏览器 8.1 真题 9 IP地址和子网掩码 9.1 真题 10 I…

nodejs批量修改word文档目录样式

工作中遇到一个需求:写个nodejs脚本,对word文档(1000+个)的目录页面进行美化。实现过程遇到不少麻烦,在此分享下。 整体思路 众所周知,Docx格式的Word文档其实是个以xml文件为主的zip压缩包,所以,页面美化整体思路是:先将文档后缀名改为zip并解压到本地,然后将关键的…

MathType在Word中的安装与配置记录

一、记录过程 1.MathType安装包下载 可直接下载本人已经安装过的安装包&#xff0c;亲测可以使用&#xff0c;下载链接如下&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1g-iOgKIqzSNz0E5rEUryug 提取码&#xff1a;1kb3 2.安装后配置 word中会出现mathtype的选项…