React Testing Library模拟具名类组件导入报'prototype'未定义错误
报错原因
你将类组件C mock为了一个普通返回空字符串的函数,React渲染类组件时需要读取构造函数的prototype属性获取继承自React.Component的相关属性与方法,普通函数不具备类组件对应的原型结构,因此触发该错误。
此外你当前的jest.mock代码存在语法问题,末尾缺少一个闭合的右括号。
修复方案
- 场景1:仅需要让组件正常渲染,不需要验证C组件的调用逻辑
直接将C mock为合法的函数式组件即可:
jest.mock('<PATH_TO_C.JS>', () => ({ C: jest.fn(() => null) }))
- 场景2:需要验证C组件的实例化、参数传递或者内部方法调用
模拟为继承React.Component的mock类即可:
// 可以自定义mock的实例方法、render返回值满足测试需求 const MockC = jest.fn().mockImplementation(() => ({ render: () => null, // 需要 mock 的其他实例方法写在这里 })) jest.mock('<PATH_TO_C.JS>', () => ({ C: MockC }))
内容的提问来源于stack exchange,提问作者Vishal
相关产品推荐
相关产品推荐

