Jest测试调用debug()返回空body,NewCompanyModal组件渲染异常求助
首次测试返回空body的原因分析
- 核心原因是你调用
debug()的时机早于组件的异步渲染流程完成时间:
你的NewCompanyModal或者其内部嵌套的CompanyInfoInputs子组件包含异步逻辑,比如内部触发了Apollo异步查询、用useEffect执行了延迟挂载逻辑、或是模态框本身自带入场动画/延迟渲染逻辑。首次测试时你在render执行后立刻调用debug(),此时所有异步任务还未执行,React还没触发状态更新和重渲染,组件还停留在初始的空占位状态,因此DOM里只有一个空div。 - 你后续添加的
await act(() => wait())逻辑刚好解决了这个问题:等待所有JS任务队列中的微任务、宏任务执行完成,触发React完成所有状态更新和DOM挂载操作,此时再调用debug()就能拿到完整的渲染内容。
小提示:你遇到的Cognito相关网络错误,是因为测试中用了真实的Apollo Client实例,该实例发起后端请求时缺少必要的身份池配置,单元测试阶段建议mock Apollo请求,不要引入真实client实例,就能避免这类依赖后端服务的报错。
内容的提问来源于stack exchange,提问作者Billcoolman
相关产品推荐
相关产品推荐

