React组件Jest快照缺失HTML内容,测试通过但快照为空
问题原因与解决方法
核心问题:你在断言时传入的是
asFragment函数本身,而非调用它返回的片段结果。Jest对函数本身生成快照,所以显示[Function]而非HTML树;同时因为函数确实存在,测试会直接通过。修复步骤:
- 修改测试代码的断言部分,将
expect(asFragment).toMatchSnapshot();改为expect(asFragment()).toMatchSnapshot(); - 重新运行测试,Jest会生成包含组件HTML结构的正确快照
- 修改测试代码的断言部分,将
修改后的完整测试代码:
describe('ProsenttrekkSkattetrekk', () => { it('Rendrer korrekt', () => { const { asFragment } = renderWithTranslations( <ProsenttrekkSkattetrekk oppdaterInntektsInfo={jest.fn()} oppdaterTypeTrekk={jest.fn()} skattetrekk={{ prosent: undefined, type: 'prosenttrekk' }} prosenttrekkBelop={10} /> ); expect(asFragment()).toMatchSnapshot(); // 调用asFragment函数获取片段 }); });
- 额外验证:如果修改后仍有异常,可以检查
renderWithTranslations是否正确返回组件渲染结果,或者组件是否因传入的props(比如prosent: undefined)导致无内容渲染。但结合你之前测试正常的情况,优先解决函数调用的问题即可。
内容的提问来源于stack exchange,提问作者Palmos
相关产品推荐
相关产品推荐

