Astro 宣布:将超过 500 多个测试从 Mocha 迁移到了 Node.js

d1649cdca731cecd305f910a5948be38.png

近期,Astro 在其官方博客中宣布,虽然我们对 Mocha 感到满意,但也在寻求让我们的 CI 作业更快的方法。最终将超过 500 多个测试从 Mocha 迁移到了 Node.js

先了解下 Astro 是什么?Astro 是适合构建像博客、营销网站、电子商务网站这样的以内容驱动的网站的 Web 框架。没有强绑定一些 UI 框架,它支持像 React、Preact、Svelte、Vue、Solid、Lit、HTMX、Web 组件等这些前端 UI 框架。

一开始,Astro 只是迁移了一个尚未使用 astro 集成套件的软件包:create-astro,由 Mocha 转为使用 Node.js 内置断言库 node:assert

当成功迁移了第一个包后,潘多拉的盒子便已打开。之后开始尝试迁移 @astrojs/node 包的测试套件。这个集成是 Astro 下载量最大的集成之一

根据其博客描述,对最终的结果是感到满意的。在迁移之后没有看到性能出现任何显著退化

Node.js 内置测试模块毕竟还比较新,在实现过程中也有遇到一些问题的,例如:

  • 一开始发现 “Node.js 测试运行器比 Mocha 慢得多”,经过调查发现是 Node.js 为每个测试文件生成了一个新进程,以确保每个测试套件都在隔离的环境中运行。这样好处是保证了测试环境不会被污染。但通过创建一个临时文件,导入所有的测试套件,让 Node.js 执行该文件,这样可在性能上得到保证

  • 不能传递 --test-concurrency 标志(仅在 Node.js 21 及以上版本可用)

  • 参数名称冗长:

    • --test-name-pattern 而不是 --match-m 参数;

    • --test-timeout 而不是 --timeout-t 参数,等等。

  • Mocha 中只需使用 it.only 就可以运行单个测试套件。而 Node.js 中你必须:

    • 使用 --test-only 参数运行 CLI

    • .only 添加到包含要运行的 it.only 的 describe 中。

    • 如果有多个 describe 实例,所有这些实例都需要标记为 .only。

对于 Astro 来讲,使用 Node.js 内置测试运行器,对于它们的主 monorepo 有一些优势:

  • 减少了我们 monorepo 中需要安装和维护的依赖项:mocha 和 chai。

  • API 迁移成本:Node.js 断言模块几乎提供了我们所需的所有功能,因此从 chai 迁移并不像我们想象的那么痛苦。

  • 可维护性:有更多的人参与 Node.js 项目来维护 Node.js 测试运行器。

  • 未来的好处:我们相信测试运行器会随着时间的推移而改进,并最终节省我们 CI 工作流程中的一些时间。

Astro 在其博客最后由提到以下两句话:

“Node.js 测试运行器仍然年轻,并且在积极开发中,有望变得更好。例如,Node.js 项目目前正在评估在我们提出使用案例后使用主进程运行测试”。

“以真正的开源合作精神,我们很高兴通过将我们的测试切换到 Node.js 来改进 Astro,反过来也将改进 Node.js 本身!”

这也是一种相互合作,相互成就吧!感谢 Astro 能够促进 Node.js 内置测试模块的发展!

参考 https://astro.build/blog/node-test-migration/

- END -

ef1b1ea1a797c1c50ad871f2a19b567a.gif

首部 Node.js 记录片发布,通过该纪录片深入了解 Node.js 的起源,认识一些最早的贡献者,主要包括 Ryan Dahl(Node.js 的创始人)、Isaac Schlueter(NPM 的创始人)等。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单了解策略模式

什么是策略模式? 策略模式提供生成某一种产品的不同方式 Strategy策略类定义了某个各种算法的公共方法,不同的算法类通过继承Strategy策略类,实现自己的算法 Context的作用是减少客户端和Strategy策略类之间的耦合,客户端只需要…

基于单片机温湿度PM2.5报警设置系统

**单片机设计介绍,基于单片机温湿度PM2.5报警设置系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机温湿度PM2.5报警设置系统概要主要涵盖了系统的整体设计思路、硬件组成、软件实现以及报警功能等关键方…

在Arduino IDE中使用文件夹组织源文件和头文件

在Arduino IDE中使用文件夹组织源文件和头文件 如果你是一名Arduino爱好者,你可能会发现随着项目的复杂度增加,代码的管理变得越来越困难。在Arduino IDE中,你可以通过使用文件夹来更好地组织你的源文件和头文件,使得代码更加清晰…

腾讯云2核2G服务器优惠价格,61元一年

腾讯云2核2G服务器多少钱一年?轻量服务器61元一年,CVM 2核2G S5服务器313.2元15个月,轻量2核2G3M带宽、40系统盘,云服务器CVM S5实例是2核2G、50G系统盘。腾讯云2核2G服务器优惠活动 txybk.com/go/txy 链接打开如下图:…

深入理解React的setState机制

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

前端工程师————HTML5学习

HTML5基础 开发工具很多,其中Hbulider较好用,下载网址如下: DCloud - HBuilder、HBuilderX、uni-app、uniapp、5、5plus、mui、wap2app、流应用、HTML5、小程序开发、跨平台App、多端框架 html表示整个页面 head表示搜素框 body表示内容 ti…

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—解题全流程(论文更新)

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索更新(论文更新) ​ 本节主要更新了论文、训练日志的log数据提取(Loss、ACC、RK)等数据可视化作图的代码 B题交流QQ群: 4583…

rabbitMQ的基础操作与可视化界面

当你安装好RabbitMq时,可以 尝试一下,这些命令 启动rabbitMQ服务 #启动服务 systemctl start rabbitmq-server #查看服务状态 systemctl status rabbitmq-server #停止服务 systemctl stop rabbitmq-server #开机启动服务 systemctl enable rabbitmq-…

09_Web组件

文章目录 Web组件Listener监听器ServletContextListener执行过程 Filter过滤器Filter与Servlet的执行 案例(登录案例) 小结Web组件 Web组件 JavaEE的Web组件(三大Web组件): Servlet → 处理请求对应的业务Listener →…

RVM安装ruby笔记

环境 硬件:Macbook Pro 系统:macOS 14.1 安装公钥 通过gpg安装公钥失败,报错如下: 换了几个公钥地址(hkp://subkeys.pgp.net,hkp://keys.gnupg.net,hkp://pgp.mit.edu),…

ML-Decoder: Scalable and Versatile Classification Head

1、引言 论文链接:https://openaccess.thecvf.com/content/WACV2023/papers/Ridnik_ML-Decoder_Scalable_and_Versatile_Classification_Head_WACV_2023_paper.pdf 因为 transformer 解码器分类头[1] 在少类别多标签分类数据集上表现得很好,但由于其查询…

css3之动画animation

动画animation 一.优点二.定义和使用三.动画序列和解释四.常见属性及解释五.简写(名字和时间不能省略)(持续时间在何时开始的时间前)(简写中无animation-play-state)六.例子1.大数据热点图2.奔跑的熊大(一个…

设计模式6--抽象工厂模式

定义 案例一 案例二 优缺点

代码随想录-二叉树(路径)

目录 257. 二叉树的所有路径 题目描述: 输入输出描述: 思路和想法: 404. 左叶子之和 题目描述: 输入输出描述: 思路和想法: 513.找树左下角的值 题目描述: 输入输出描述:…

Android裁剪图片为波浪形或者曲线形的ImageView

如果需要做一个自定义的波浪效果的进度条,裁剪图片,对ImageView的图片进行裁剪,比如下面2张图,如何实现? 先看下面的效果,看到其实只需要对第一张高亮的图片进行处理即可,灰色状态的作为背景图。…

基于SSM的戒烟网站(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的戒烟网站(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMv…

腾讯云优惠券领取方法大公开,省钱不再是难事

腾讯云—腾讯倾力打造的云计算品牌,以卓越科技能力助力各行各业数字化转型,为全球客户提供领先的云计算、大数据、人工智能服务,以及定制化行业解决方案和提供可靠上云服务,助力企业和开发者稳定上云! 然而&#xff0…

数据结构进阶篇 之 【二叉树顺序存储(堆)】的整体实现讲解(赋完整实现代码)

做人要谦虚,多听听别人的意见,然后记录下来,看看谁对你有意见 一、二叉树的顺序(堆)结构及实现 1.二叉树的顺序结构 2.堆的概念及结构 3.堆的实现 3.1 向下调整算法 AdJustDown 3.2 向上调整算法 AdJustUP 3.3 …

C语言例1-8:设 char x,y; ,scanf(“x=%c,y=%c“,x,y); 后使 x 为 ‘X‘, y为 ‘Y‘,则键盘上的正确输入是

代码如下&#xff1a; #include<stdio.h> int main(void) {char x,y;scanf("x%c,y%c",&x,&y);printf("x%c,y%c\n",x,y);return 0; } 键盘输入选项A: xXyY 结果如下&#xff1a; 键盘输入选项B: xX,yY 结果如下&#xff1a; 键盘输入选项…

通过Jmeter准备压测数据-mysql示例

1、新建线程组 总共30万条数据 2、创建jdbc链接 创建jdbc连接配置 配置mysql连接 需要在jmeter安装的路径\apache-jmeter-5.6.3\lib\ext 目录下添加mysql 驱动 3、创建jdbc请求 jdbc链接名称需要与上一步中的保持一致&#xff0c;同时添加insert语句 例如 INSERT INTO test…