Skip to content

plugin-detail 测试套件里有测试向 127.0.0.1:3000 发起真实网络请求(ECONNREFUSED 噪音,未走 MSW) #3339

Description

@xuyushun441-sys

#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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions