You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Jest测试在CI/CD中随机偶现Cannot read property 'body' of null错误

CI/CD流水线随机偶现测试失败问题

问题现象

  • 本地执行所有测试均成功,但在CI/CD流水线中随机出现不同测试用例失败
  • 所有失败用例统一报错:TypeError: Cannot read property 'body' of null
  • 错误栈指向的文件,与当前失败的测试用例无直接或间接引用关系

错误详情

所有失败测试汇总
2022-11-16T09:54:22.7643575Z FAIL src/components/__tests__/SearchDishResultDetail.spec.tsx (5.037 s)
2022-11-16T09:54:22.7644466Z   ● SearchDishResultDetail› 渲染正常
2022-11-16T09:54:22.7644747Z 
2022-11-16T09:54:22.7645262Z     TypeError: Cannot read property 'body' of null
2022-11-16T09:54:22.7645517Z 
2022-11-16T09:54:22.7645835Z       263 |         !isUserVerified(UserDetails)
2022-11-16T09:54:22.7646556Z       > 264 |       ) {
2022-11-16T09:54:22.7646866Z           |       ^
2022-11-16T09:54:22.7647168Z       265 |         return;
2022-11-16T09:54:22.7647468Z       266 |       }
2022-11-16T09:54:22.7647869Z       267 |       const preferredAddressList = UserDetails.address.map(
2022-11-16T09:54:22.7648150Z 
2022-11-16T09:54:22.7648743Z       at getActiveElement (node_modules/react-dom/cjs/react-dom.development.js:6651:16)
2022-11-16T09:54:22.7649477Z       at getActiveElementDeep (node_modules/react-dom/cjs/react-dom.development.js:6939:17)
2022-11-16T09:54:22.7650226Z       at getSelectionInformation (node_modules/react-dom/cjs/react-dom.development.js:6972:21)
2022-11-16T09:54:22.7651136Z       at prepareForCommit (node_modules/react-dom/cjs/react-dom.development.js:7463:26)
2022-11-16T09:54:22.7651860Z       at commitRootImpl (node_modules/react-dom/cjs/react-dom.development.js:22474:5)
2022-11-16T09:54:22.7656503Z       at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:653:12)
2022-11-16T09:54:22.7657351Z       at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11039:10)
2022-11-16T09:54:22.7658084Z       at commitRoot (node_modules/react-dom/cjs/react-dom.development.js:22381:3)
2022-11-16T09:54:22.7928369Z       at finishSyncRender (node_modules/react-dom/cjs/react-dom.development.js:21807:3)
2022-11-16T09:54:22.7929476Z       at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:21793:7)
2022-11-16T09:54:22.7930268Z       at node_modules/react-dom/cjs/react-dom.development.js:11089:24
2022-11-16T09:54:22.7930898Z       at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:653:12)
2022-11-16T09:54:22.7931715Z       at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11039:10)
2022-11-16T09:54:22.7932554Z       at flushSyncCallbackQueueImpl (node_modules/react-dom/cjs/react-dom.development.js:11084:7)
2022-11-16T09:54:22.7933379Z       at flushSyncCallbackQueue (node_modules/react-dom/cjs/react-dom.development.js:11072:3)
2022-11-16T09:54:22.7934418Z       at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21199:9)
2022-11-16T09:54:22.7935218Z       at dispatchAction (node_modules/react-dom/cjs/react-dom.development.js:15660:5)
2022-11-16T09:54:22.7935899Z       at Timeout._onTimeout (src/components/UserProfile/UserProfile.tsx:264:7)

排查方向建议

  • 检查CI环境的jsdom配置:该错误多因jsdom模拟DOM时document.body为null导致,可能是CI环境中测试执行时DOM初始化不完整
  • 测试隔离问题:排查不同测试用例间是否存在未清理的副作用(比如全局定时器、残留DOM元素),导致随机触发非当前测试的代码逻辑
  • 依赖版本一致性:确认本地与CI环境的react-dom、scheduler等依赖版本完全一致,避免版本差异引发的DOM处理逻辑冲突
  • 异步代码处理:检查UserProfile.tsx第264行的定时器逻辑,确保测试中对异步操作有正确的等待或清理机制

内容的提问来源于stack exchange,提问作者kd_24

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:55:21