前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Astro 宣布:将超过 500 多个测试从 Mocha 迁移到了 Node.js

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

作者头像
五月君
发布2024-04-12 14:09:37
1130
发布2024-04-12 14:09:37
举报
文章被收录于专栏:Nodejs技术栈

近期,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 -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nodejs技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档