Skip to content

服务器托管,北京服务器托管,服务器租用-价格及机房咨询

Menu
  • 首页
  • 关于我们
  • 新闻资讯
  • 数据中心
  • 服务器托管
  • 服务器租用
  • 机房租用
  • 支持中心
  • 解决方案
  • 联系我们
Menu

调试 Jest 测试用例,有更强大的方式

Posted on 2023年5月6日 by hackdl

Jest 是一个前端测试框架,它可以组织和运行测试用例,并且提供了 mock、断言等 api。

比如这样:

这是 nest 应用的一段测试代码,在 beforeEach 里面做了初始化逻辑,在每个 describe 里写不同的测试逻辑。

这样的测试代码在应用中有很多。

输入 jest 就会执行所有的测试代码:

如果只是想跑某个测试文件的用例呢?

可以这样:

jest 后面加上要跑的测试文件的路径就行。

那如果测试文件里有多个测试用例,想只跑某个测试用例呢?

比如这三个测试用例:

可以通过 -t 来指定:

-t 是 –testNamePattern 的缩写,可以指定要跑的用例名的正则。

jest 只会跑匹配的用例:

知道了 jest 用例怎么跑,那有时我们想断点调试它怎么办呢?

node 调试都是在 .vscode/launch.json 里加一个调试配置:

然后在 debug 面板点击启动调试:

那跑 jest 怎么跑呢?

其实我们跑 jest 最终执行的是 node_modules/jest/bin/jest.js 这个文件,所以调试的时候就直接用 node 跑这个文件,传入参数就行。

还要指定日志输出位置为内置的终端,也就是 console 为 integratedTerminal。

打个断点,然后点击调试按钮:

但你会发现它跑了多个 woker 进程,每个用例一个,这是 jest 优化性能的方式。

但调试的时候可以不用这种优化,直接在主进程跑就行。

可以加个 -i 的参数:

-i 是 –runInBand 的缩写,这个参数的意思是不再用 worker 进程并行跑测试用例,而是在当前进程串行跑:

看左侧的调用栈,明显能看出区别来:

如果我们只想调试 root2 这个测试用例,那就可以加上对应的参数:

加上文件名和用例名。

但这样每调试一个用例都得改下配置也太麻烦了,能不能我打开哪个文件,就跑哪个文件的用例呢?

可以的。

VSCode 调试配置支持变量,比如 ${file} 就代表当前文件。

跑起来可以看到,文件路径是对的:

这样就可以打开哪个调试那个了。

那想指定具体的测试用例呢?

vscode 还支持输入类型的变量。

在 inputs 部分声明一个输入的变量,指定描述信息、默认值。然后在调试配置部分通过 ${input:变量名} 引用:

跑起来就是这样的:

输入哪个用例的名字就跑哪个用例。

这样,就一个调试配置来调试任意测试用例了!

大家可能用过 Jest Runner 等 VSCode 插件:

它会在每个测试用例旁边加一个运行和调试的按钮:

原理就很容易懂了,点击不同位置的 debug,就是获取文件名和用例名传入调试配置。

这种插件是挺方便,但是太过黑盒,出了问题很难解决,不如自己写调试配置,各种 jest 运行的参数都可以自己加。

而且调试配置可以写的很灵活,比如 -t 后面支持正则,那 root、root2、root3 这三个用例想跑后两个,我们完全可以输入 rootd 来匹配。

用那个 jest 的插件可以么?明显不能。

总结

Jest 支持跑全部的测试用例,或者跑指定文件指定名字的用例,在 VSCode 里可以通过 node 调试的方式来调试。

通过调试配置的内置变量以及输入的变量,可以达到一个调试配置调试任意文件任意用例的效果。

相比第三方的 Jest 插件,自己写调试配置明显灵活、强大的多。

更多调试技术,可以看我的小册《前端调试通关秘籍》

服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net

Related posts:

  1. 北京兆维机房评测:设施如何,服务怎样
  2. 辽宁中文版服务器托管云空间
  3. 容大互联:可靠的服务器托管服务
  4. 便宜的大带宽服务器
  5. 免费托管我的世界服务器:完美解决方案

服务器托管,北京服务器托管,服务器租用,机房机柜带宽租用

服务器托管

咨询:董先生

电话13051898268 QQ/微信93663045!

上一篇: OJ刷题之旅
下一篇: 为什么说前端监控系统离不开 RabbitMQ?

最新更新

  • 五月学习之keepalived 软件简介
  • Cibersort免疫浸润的在线分析及R语言代码实现
  • 阿里云的认证最有几个等级?考试费用是多少?
  • 京东APP百亿级商品与车关系数据检索实践 | 京东云技术团队
  • 【Hello Network】TCP协议 TCP协议 确认应答机制 (ACK) 超时重传机制 连接管理机制 流量控制 滑动窗口 拥塞控制 延时应答 捎带应答 面向字节流 粘包问题 TCP的异常情况 TCP小结 基于TCP的应用层协议

随机推荐

  • 东台云服务器托管:安全稳定的云计算服务
  • 评估中国服务器托管商的服务质量
  • 国内服务器托管:安全高效的网络存储解决方案
  • 东方机柜租用价格
  • 本地服务器连接托管服务器:优化网络连接与数据传输

客服咨询

  • 董先生
  • 微信/QQ:93663045
  • 电话:13051898268
  • 邮箱:dongli@hhisp.com
  • 地址:北京市石景山区重聚园甲18号2层

友情链接

  • 服务器托管
  • 服务器租用
  • 机房租用托管
  • 服务器租用托管
©2023 服务器托管,北京服务器托管,服务器租用-价格及机房咨询 京ICP备13047091号-8