在 #3307 的验证运行中顺带观察到(origin/main @ a41568462,非本单改动引入、不在其改动集内)。测试全绿,这是噪音级 hygiene 发现,只做记录。
现象
仓根运行:
pnpm exec vitest run packages/plugin-detail packages/fields/src/__tests__/field-carrier-sdui.test.tsx packages/components/src/renderers/form/__tests__/form-field-carrier.test.tsx --maxWorkers=2
42 files / 380 tests 全部通过,但 stderr 里混着多条:
Error: connect ECONNREFUSED 127.0.0.1:3000
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1637:16) {
errno: -111,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 3000
}
即某些测试中有组件发出了真实 fetch(happy-dom 的默认 origin 落在 localhost:3000),既没被 MSW 拦截,也没被断言消费——fire-and-forget。
为什么值得记录
- AGENTS.md §7 约定 mock 走
@objectstack/plugin-msw,组件数据获取走 @objectstack/client;测试里逃逸出真实网络请求说明有调用绕开了这层。
- 现在只是噪音;但若 CI 端口 3000 恰好有服务在听(本仓多 agent 并行开发正是这种环境),这些请求会命中真实后端,测试结果开始依赖环境状态——是潜在的 flaky 源和调试干扰(失败日志里混入无关 ECONNREFUSED,会误导排障)。
- 未定位到具体文件(本单 scope 之外未再运行 bisect);复现命令如上,逐文件二分即可。
建议方向
定位发起请求的组件/测试后:要么在该测试装配 MSW handler,要么在渲染前把数据依赖注入为测试替身。不建议全局吞掉网络错误——那只会把逃逸藏起来。
Generated by Claude Code
在 #3307 的验证运行中顺带观察到(
origin/main@a41568462,非本单改动引入、不在其改动集内)。测试全绿,这是噪音级 hygiene 发现,只做记录。现象
仓根运行:
42 files / 380 tests 全部通过,但 stderr 里混着多条:
即某些测试中有组件发出了真实 fetch(happy-dom 的默认 origin 落在
localhost:3000),既没被 MSW 拦截,也没被断言消费——fire-and-forget。为什么值得记录
@objectstack/plugin-msw,组件数据获取走@objectstack/client;测试里逃逸出真实网络请求说明有调用绕开了这层。建议方向
定位发起请求的组件/测试后:要么在该测试装配 MSW handler,要么在渲染前把数据依赖注入为测试替身。不建议全局吞掉网络错误——那只会把逃逸藏起来。
Generated by Claude Code