网易首页 > 网易号 > 正文 申请入驻

Bazel把3个隐形依赖逼到墙角,测试才现原形

0
分享至


去年11月,我花两周把单个包塞进Bazel。当时觉得"差不多懂了"。三个月后,整个仓库的测试全跑通了,才发现那次只是预习。

今天说测试。Bazel的测试哲学和前端圈惯用的那套,根本是两码事。

沙盒不说谎,但你的依赖清单会说谎

改造前,components包的test脚本是直接调Jest。这种跑法有个隐藏福利:整个node_modules对你敞开大门。只要文件还在磁盘上,require就能找到,管你有没有在package.json里正经声明。

改成bazel test :jest之后,第一次跑就崩了。报错三连:

Cannot find module '@testing-library/jest-dom' from 'jest-setup.js'

Cannot find module 'prop-types' from 'src/Pagination/index.tsx'

Could not locate module ./index.scss mapped as: identity-obj-proxy

三个包明明躺在node_modules里。Bazel不是瞎子,是故意装瞎——它给测试造了一个Linux沙盒,里面只放你显式写在data属性里的东西。没名单?就当不存在。

这三个依赖一直是"隐形人口":@testing-library/jest-dom在jest-setup.js里被引用,prop-types是组件的peer dep,identity-obj-proxy负责把SCSS模块换成mock对象。以前它们蹭着node_modules的顺风车,现在被Bazel的安检拦下来了。

修复倒简单。在packages/components/BUILD.bazeljest_test规则里补三行:

":node_modules/@testing-library/jest-dom", # used in jest-setup.js

":node_modules/prop-types", # peer dep of the component

":node_modules/identity-obj-proxy", # SCSS module mock

再跑,PASS。六个包如法炮制,又揪出几组漏网的peer dep和测试工具。

从"各自为战"到"一键过筛"

单包通了,下一步是根目录。老办法是pnpm -r run test,每个包起一个Jest进程。能跑,但Bazel的缓存和并行全浪费了。

新命令一行:

bazel test //packages/... --test_tag_filters=jest

//packages/...是Bazel的通配符,扫遍packages目录下所有测试目标。但仓库里还有:lint:stylelint目标,不加过滤器会全跑出来。

让每个jest_test规则带个标签,七个BUILD文件各加一行tags = ["jest"]。根目录的package.json最终变成:

"test": "bazel test //packages/... --test_tag_filters=jest"

跑一遍,缓存命中、并行调度、失败重试,全是Bazel原生能力。以前七个Jest进程在各自小黑屋里闷头跑,现在被Bazel统一编排,快了多少没测,但CPU风扇声明显变了。

测试即文档,依赖即契约

这套改造逼我做了一件事:把隐式依赖全部显式化。以前代码能跑就行,现在每个测试工具、每个mock、每个peer dep都得在BUILD文件里签字画押。

代价是多了几十行配置。收益是——半年后回来改代码,不会疑惑"这个jest-setup.js到底依赖了谁"。沙盒里的失败清单,就是一份精确的依赖地图。

有个细节:Bazel的测试缓存只认输入文件的哈希。如果你改了测试代码但忘了更新BUILD文件里的依赖声明,本地能过,CI会挂。这种"本地CI不一致"以前要查半天,现在沙盒帮你提前暴露。

下一步是把这个模式铺到E2E测试。但那是另一个故事了——毕竟,Cypress的沙盒策略和Jest还不太一样。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
特朗普:美国海军将拦截所有向伊朗支付通行费的船只,同时“摧毁”伊朗人在霍尔木兹海峡布设的水雷!原油暗盘应声大涨5%

特朗普:美国海军将拦截所有向伊朗支付通行费的船只,同时“摧毁”伊朗人在霍尔木兹海峡布设的水雷!原油暗盘应声大涨5%

每日经济新闻
2026-04-12 21:55:06
骑士球星哈登谈本赛季总冠军目标:没有想那么远&先努力晋级东决

骑士球星哈登谈本赛季总冠军目标:没有想那么远&先努力晋级东决

铿锵格斗
2026-04-13 00:51:14
阿尔茨海默病者逐渐增多,医生提醒:55岁后,尽量改掉6个坏习惯

阿尔茨海默病者逐渐增多,医生提醒:55岁后,尽量改掉6个坏习惯

39健康网
2026-02-17 18:31:37
山西闻喜一男子被狗咬伤 辗转两接种点等待6小时才接种

山西闻喜一男子被狗咬伤 辗转两接种点等待6小时才接种

封面新闻
2026-04-12 16:37:28
杜月笙面馆吃饭,一伙地痞流氓找他要保护费,杜月笙:嫌命长吗?

杜月笙面馆吃饭,一伙地痞流氓找他要保护费,杜月笙:嫌命长吗?

千秋文化
2026-04-01 20:35:51
20万内中大型SUV,激光雷达+全铝悬架,终于来了!

20万内中大型SUV,激光雷达+全铝悬架,终于来了!

米粒说车唯一呀
2026-04-12 10:49:15
李春平死了

李春平死了

霹雳炮
2025-11-05 22:34:23
为什么一边降薪,一边还要刺激消费?

为什么一边降薪,一边还要刺激消费?

细说职场
2026-04-10 18:42:40
蒋纬国临终前爆料:蒋介石根本没有生育能力,蒋经国也不是亲生的

蒋纬国临终前爆料:蒋介石根本没有生育能力,蒋经国也不是亲生的

范烽舍长
2026-04-11 18:34:05
知名港星癌细胞扩散至脑部,闻到身上有尸臭味,剩四分之一条人命

知名港星癌细胞扩散至脑部,闻到身上有尸臭味,剩四分之一条人命

叨唠
2026-03-15 17:36:49
金莎和孙丞潇官宣领证结婚,晒出聘礼五金,500元一克买的黄金

金莎和孙丞潇官宣领证结婚,晒出聘礼五金,500元一克买的黄金

离离言几许
2026-04-09 15:05:44
中年女人这两个表现,就是真心喜欢你

中年女人这两个表现,就是真心喜欢你

加油丁小文
2026-03-30 08:08:35
迪丽热巴胯真大,脚也大

迪丽热巴胯真大,脚也大

可乐谈情感
2026-04-13 01:47:12
A股:刚刚,中央一部门发布,释放一信号,周一将迎来更大的变化

A股:刚刚,中央一部门发布,释放一信号,周一将迎来更大的变化

另子维爱读史
2026-04-12 18:57:31
如今看来,快船用哈登换加兰,就是一个无脑操作

如今看来,快船用哈登换加兰,就是一个无脑操作

林子说事
2026-04-12 09:54:04
48岁大妈与21岁小伙奔现爬山看日出,双双坠崖,警方发现背包愣住

48岁大妈与21岁小伙奔现爬山看日出,双双坠崖,警方发现背包愣住

罪案洞察者
2025-07-14 15:40:12
昔日吃鸡一姐年入八位数 如今开播一周收入仅500元!

昔日吃鸡一姐年入八位数 如今开播一周收入仅500元!

游民星空
2026-04-11 17:20:12
女生主动起来有多黏人?网友:这些女的太开放了

女生主动起来有多黏人?网友:这些女的太开放了

带你感受人间冷暖
2026-01-27 00:20:06
10部鲜少被提及的顶级情欲电影

10部鲜少被提及的顶级情欲电影

胶片猴
2026-04-12 13:09:31
八千里路云和月:要不是孟万福惨死,丁玉娇到死不知,家因何破散

八千里路云和月:要不是孟万福惨死,丁玉娇到死不知,家因何破散

范櫳舍长
2026-04-12 15:57:31
2026-04-13 03:11:00
硬核玩家2哈
硬核玩家2哈
沉淀中,勿扰
1229文章数 5关注度
往期回顾 全部

科技要闻

理想称遭恶意拉踩,东风日产:尊重同行

头条要闻

伊媒:美驱逐舰遭革命卫队锁定 距离被摧毁仅差几分钟

头条要闻

伊媒:美驱逐舰遭革命卫队锁定 距离被摧毁仅差几分钟

体育要闻

创造历史!五大联赛首位女性主教练诞生

娱乐要闻

赌王女儿何超蕸病逝,常年和乳癌斗争

财经要闻

美伊谈判破裂的三大症结

汽车要闻

焕新极氪007/007GT上市 限时19.39万起

态度原创

艺术
教育
数码
健康
公开课

艺术要闻

揭开她笔下女人的神秘面纱,豪放洒脱的魅力令人惊叹!

教育要闻

小班教学,9月开校,树德派校长!这所中学,正在招老师

数码要闻

苹果版套娃 买台Mac Pro回家:打开一看里面还藏着一台Mac Pro

干细胞抗衰4大误区,90%的人都中招

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版