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

掌握 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.kler.cn/a/382165.html

相关文章:

  • 深入理解网络协议:OSPF、VLAN、NAT与ACL详解
  • Kubernetes——part9-2 kubernetes集群java项目上云部署
  • 如何建购物网站提升用户体验
  • 写文件回前端进行下载,报错:原因:CORS 头缺少 ‘Access-Control-Allow-Origin‘)
  • PHP查询实时股票行情
  • springboot - 定时任务
  • WebSocket消息帧的组成结构
  • hpp文件的使用
  • Node.js + MongoDB + Vue 3 全栈应用项目开发
  • 多头注意力中的 `fc_out` 层:为什么要加它?带你彻底搞懂多头注意力机制
  • 神经网络s
  • B站-Bilibili-评论抓取和分析
  • Vue 3 day1106
  • Linux初阶——线程(Part3):POSIX 信号量 CP 模型变体
  • 求助帖【如何学习核磁共振的原理】
  • 04音视频——基于全志V3S的Linux开发板教程笔记
  • 消息通知——公众号、小程序、短信对比
  • Vue进阶指南:Watch 和 Computed 的深度理解
  • docker、es数据库
  • OpenCv综合应用——人脸识别
  • 一次32bit有符号数据类型转换为64bit无符号数据类型引发的溢出错误
  • 各地级市能源消耗量数据-基于灯光数据的反演(2000-2022年)
  • 在 Hive SQL 中判断字段是否包含指定字符串的几种方法
  • 安卓内核内存回收
  • RHCE-SElinux+防火墙
  • Git 测验