在 Jest 测试中如何 debug 断点?

什么是 Jest?

Jest 是一个基于 JavaScript 的测试框架,它由 Facebook 编写并维护。它可以在多种 JavaScript 环境下运行,例如浏览器、Node.js、React Native 等,是目前流行的前端测试框架之一。

Jest 断点调试

在 Jest 测试中,你可能会遇到需要使用断点调试的情况。比如你的测试用例运行结果不符合预期,需要排除问题。

下面我们将介绍如何在 Jest 测试中使用断点调试功能。

使用 VS Code 插件进行断点调试

Jest 提供了集成了 VS Code 插件的命令行工具,这样就可以在 VS Code 中进行断点调试了。

首先你需要安装 Jest 和 VS Code 插件:

--- - ---- --------------------------- ----------

安装完成后,你需要在 package.json 中配置 Jest 的调试命令:

-
  ---------- -
    ------- ----- ----------- ------------------- --------
  -
-

这里的 --debug 标志将告诉 Jest 使用 VS Code 调试器,--runInBand 标志告诉 Jest 顺序运行测试,以避免并发问题,--detectOpenHandles 标志可检测未关闭的资源,例如未关闭的服务器实例。

接下来你需要在你的测试代码中添加一个断点:

----------- ------ -- -- -
  ----- ----- - --
  ----- ------ - --

  ---------

  ------------ - ----------------
---

在这个测试用例中,我们使用了 debugger 关键字来添加一个断点。当 Jest 运行到这个点时,它就会自动启动 VS Code 调试器。

然后你需要打开 VS Code,按下 Ctrl + Shift + D 组合按键打开 VS Code 调试面板。在调试面板中,选择 Jest Tests,然后点击运行按钮就可以进行调试了。

使用 Node.js 内置调试器进行断点调试

如果你不想安装插件,也可以使用 Node.js 内置的调试器进行断点调试。首先你需要安装 Jest:

--- - ---- ----------

接下来你需要更新 package.json 中的命令:

-
  ---------- -
    ------- ----- ------------- -------------------------
  -
-

这里的 --inspect-brk 标志告诉 Node.js 使用调试器,./node_modules/.bin/jest 是 Jest 的执行程序。

然后你需要在你的测试代码中添加一个断点:

----------- ------ -- -- -
  ----- ----- - --
  ----- ------ - --

  ---------

  ------------ - ----------------
---

在这个测试用例中,我们使用了 debugger 关键字来添加一个断点。当 Jest 运行到这个点时,它就会自动启动 Node.js 调试器。

接下来你需要运行测试命令:

--- ---- -- -------------

这里的 --no-coverage 标志告诉 Jest 不要生成测试覆盖率报告,以避免误导调试结果。

当测试用例运行到断点时,Node.js 就会暂停并等待调试器连接。接下来你需要打开 Chrome 浏览器,输入 chrome://inspect 并打开。在页面中选择 Open dedicated DevTools for Node 即可开始调试了。

结论

在 Jest 测试中使用断点调试功能可以帮助你快速排除问题,提高测试效率。通过 VS Code 插件进行断点调试,或使用 Node.js 内置调试器,都可以实现断点调试。不同的调试方式有各自的优缺点,在实际应用中需要根据需求选择适合自己的方式。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/66f67cc3c5c563ced58786db


猜你喜欢

  • ES9 和你的 JavaScript 代码

    在现代 Web 开发中,JavaScript 是无法避免的一部分。ES9 是 JavaScript 的最新一代标准,它拥有许多新特性,这些特性可以为开发人员的工作带来便利,帮助他们更加高效地进行开发。

    2 个月前
  • Sequelize 实现数据库备份与恢复

    前言 现如今,数据是开发人员和用于的核心资产。因此,良好的数据备份和恢复机制对于任何应用程序都至关重要。 Sequelize 是一个支持多种关系型数据库的 ORM 框架,提供了很多方便的 API 用于...

    2 个月前
  • ES7 中的 if(condition){ ... } 语法规则及相关使用案例

    ES7 中的 if(condition){ ... } 语法规则及相关使用案例 在最近的 ECMAScript 7 (ES7) 中,if 语句得到了功能扩展。除了基本的判断语法外,if 还可以支持更多...

    2 个月前
  • 无障碍字体设计:如何让字体更清晰易读?

    在现代社会中,数字化时代也使得信息交流变得更加方便和快速,然而,较低的数字素养社会群体也让人越发关注用户体验的重要性,以及无障碍设计的必要性,特别在我们日常使用的字体设计上也有很大的作用。

    2 个月前
  • Tailwind CSS 中的 hover 和 focus 的优化技巧

    Tailwind CSS 是一个基于原子类的 CSS 框架,它可以大大简化前端开发过程中的样式处理。在使用 Tailwind CSS 的过程中,hover 和 focus 是常见的伪类样式。

    2 个月前
  • 利用 Node.js 实现 RESTful API 服务的方法及步骤

    作为前端开发者,实现 RESTful API 服务是一项非常重要的技能。这是因为 RESTful API 是一种非常流行的服务端开发框架,它可以帮助我们设计和实现高效的网络应用程序。

    2 个月前
  • Redis 如何实现分布式事务

    前言 在现代应用中,分布式架构已经成为了标配。由于不同子系统的职责不同、数据存储位置不同,甚至在不同的机房和地域,因此在设计分布式应用时,如何保证数据的一致性就成为了一个非常重要的问题。

    2 个月前
  • Custom Elements 和 Vue.js 组件的相似和不同点

    在现代 Web 开发中,许多前端框架和技术都出现了,其中 Vue.js 和 Custom Elements 是两个非常流行的前端技术。虽然两者都被用于构建可重用的组件,但是它们之间仍有一些不同。

    2 个月前
  • CSS Reset 的历史及演变

    前言 当我们开始写 CSS 时,我们面临着各种问题和挑战,例如浏览器默认样式的不稳定性和浏览器之间的差异。为了解决这些问题,开发人员开发了一种名为 CSS Reset 的技术,用于重置文档中的所有默认...

    2 个月前
  • 如何在响应式设计中实现自适应的响应式导航栏

    前言 随着移动设备的普及,响应式设计已成为网页设计的标配之一。而响应式设计中的导航栏是一个非常关键的组件,因为它是用户浏览网站的入口。在本文中,我们将介绍如何实现一个自适应的响应式导航栏,让用户在不同...

    2 个月前
  • 如何在 Angular 中实现动画效果

    在现今全球化的互联网时代,网页应用已经成为人们工作和生活中不可缺少的一部分。而动画效果的引入可以大大提升网页应用的用户体验和美观程度。本文将介绍如何在 Angular 中实现动画效果。

    2 个月前
  • 在 Kubernetes 上实现深度学习自动化部署

    随着人工智能技术的快速发展,深度学习作为其中的重要组成部分,成为了许多科学家和工程师的核心技能。然而,自动部署和管理深度学习模型的流程仍然比较繁琐和耗时。为了解决这个问题,本文将介绍如何利用 Kube...

    2 个月前
  • Sequelize 之使用 TypeScript 模块化操作

    Sequelize 是一款 Node.js ORM 框架,能够方便地连接各种数据库,并提供了丰富的 API 进行操作。尤其在 Web 应用程序中,Sequelize 的优点得到了广泛的应用。

    2 个月前
  • Serverless 容器架构漫谈

    在过去,服务器是应用部署的唯一选择,然而这种方式的缺点在于,还需要管理服务器,而这通常需要一些专业知识和技能。近年来,随着容器和无服务器(Serverless)开发的兴起,部署和运行应用不再需要管理服...

    2 个月前
  • 手把手教你使用 GraphQL 减少 API 请求

    介绍 GraphQL 是一种数据查询和操作语言,由 Facebook 在 2015 年开源发布。它提供了一种更高效、更强大的方式来获取和更新服务器端的数据,尤其适用于现代 Web 应用程序的开发。

    2 个月前
  • 在 Express.js 应用程序中使用 AJAX 获取数据

    AJAX(Asynchronous JavaScript and XML)是一种在 Web 应用程序中常用的技术,可以在不重新加载页面的情况下向服务器请求数据并更新网页内容。

    2 个月前
  • 如何使用 Enzyme 测试 React 组件中的响应式设计

    React 组件的响应式设计是很重要的,不仅能提升用户体验,也能增强组件的可维护性。而 Enzyme 是 React 非常重要的测试工具,能够方便地测试 React 组件中的响应式设计。

    2 个月前
  • 无障碍设计:如何让页面布局更易读?

    随着互联网的普及,人们对于网页的访问需求越来越广,而无障碍设计对于许多人来说已经成为了必需品。特别是对于那些视觉上或听觉上存在障碍的人来说,良好的无障碍设计能够帮助他们更好地使用网页。

    2 个月前
  • 在 Deno 中使用 Express 的几种方式

    Deno 是一个新兴的 JavaScript 运行环境,它可以在浏览器之外运行 JavaScript,并具有与 Node.js 类似的 API。而 Express 是一个流行的 Node.js Web...

    2 个月前
  • RxJS 在 Angular6 中的新特性

    什么是 RxJS RxJS 是一个处理异步数据流的库,它实现了观察者模式和迭代器模式。 RxJS 的核心是 Observable, 它提供了一种处理异步和基于事件的程序的方式,并且可以和 Angula...

    2 个月前

相关推荐

    暂无文章