Jest单测如何提高效率的思考

87 阅读4分钟

热更新

前言:我们在修改单测报错的时候每次都需要重新执行mtt -nodiff -f 'test文件路径命令来查看更新后的代码测试效果,非常的不方便,于是开始思考是否有监视模式使得我们无需重新执行测试命令即可查看最新版本代码的测试执行情况

Jest 监视模式(Jest watch mode)是 Jest 测试框架的一个功能,它允许我们在 开发 过程中实时监视文件的变化并自动重新运行相关的测试。

在监视模式下,当运行 Jest 命令时,它会启动一个持续运行的任务,监听文件系统中的文件变化。一旦检测到文件的更改,Jest 将重新运行与更改相关的测试,并在终端中显示结果。

监视模式的主要优点是可以提供快速的反馈循环,使我们能够在编辑和保存代码时立即看到测试结果。这样可以帮助我们更加高效地进行开发和调试。

使用方式:

  • watchAll:监视文件的更改并在任何更改时重新运行所有测试。

    •   操作方法:在package.json中配置"test": "jest --watchAll"
  • watch:监视 Git 仓库中更改的文件,并重新运行与已更改的文件相关的测试。

  • Jest 监视模式还提供了其他一些选项,例如 --onlyChanged 参数可以只运行与更改相关的测试

--coverage 参数可以在每次运行测试时生成测试覆盖率报告等。

思考:在热更新模式下,如果项目非常庞大时,每次执行用例都扫描分析项目中的所有文件和依赖项,以确定需要运行的测试集合。这个分析过程可能会消耗大量的时间,那可以如何解决?

利用 Haste Map

Haste Map配置项文档

Haste Map 是 Jest 测试框架中的一个功能,用于加快测试运行速度。

为了优化上述问题,Jest 引入了 Haste Map 的概念。Haste Map 是一个映射表,它将项目中的文件和模块的路径映射到它们的 ID。这个映射表可以在每次测试运行之间保存下来,并在后续的测试运行中重复使用,从而避免重新分析所有文件和依赖项。

Haste Map 的主要优点是加快了测试的运行速度。通过避免重复的文件分析和依赖项解析过程,Jest 可以更快地确定需要运行的测试集合,从而提高了开发者的反馈速度。

Jest Runner

前言:当遇到case报错的时候,我们要去排查源文件代码逻辑或test文件代码逻辑是否错误。当代码量较大或者涉及到多个文件函数之间的调用时,我们只靠自己人工排查是效率非常低的,这时候就需要一个debug工具去协助我们理清代码执行逻辑

Jest Runner是一个专门为Jest测试框架 设计 的插件,提供了与 Jest 相关的特定功能和快捷方式。

主要功能:

  1. 执行测试用例:Jest Runner 会按照预定义的顺序执行测试用例,并记录每个测试函数的执行结果。
  2. 并行执行:Jest Runner 可以并行执行多个测试用例,以提高测试运行速度。
  3. 异步支持:Jest Runner 可以处理异步测试函数,并等待异步操作完成后再报告结果。
  4. 报告结果:Jest Runner 会收集所有测试函数的执行结果,并生成详细的测试报告,显示每个测试函数的通过或失败情况,以及测试覆盖率等信息。

Jest VS VScode内置 调试 工具

  • 功能:Jest Runner 是专门为 Jest 测试框架设计的,它提供了一些特定于 Jest 的功能,例如在测试文件或测试套件级别运行测试、仅运行失败的测试、生成测试覆盖率报告等。VSCode 自带的调试工具则是一个通用的调试器,可以与多种测试框架和编程语言一起使用。
  • 集成度:Jest Runner 是一个专门为 Jest 测试框架开发的插件,与 Jest 深度集成,提供了与 Jest 相关的特定功能和快捷方式。VSCode 自带的调试工具是 VSCode 的一部分,与编辑器紧密集成,并提供了与编辑器的其他功能(例如断点设置、变量查看器等)的集成。
  • 配置:Jest Runner 提供了一些专门用于配置 Jest 测试的选项,例如测试文件的匹配模式、测试覆盖率报告的输出路径等。VSCode 自带的调试工具则需要用户手动配置调试器,以适应不同的测试框架和编程语言。