javascript - 如何在 React 中模拟组件
问题描述
我是 reactJS 的新手。我RegisterForm
用Jest
.
我是已经测试过的模拟组件(例如PasswordField
)。因此,我嘲笑它,但出现了一个错误:
Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.
Check the render method of `Field`.
9 | describe('HeaderContainer', () => {
10 | it('render correctly', ()=>{
> 11 | const tree = renderer.create(
| ^
12 | <RegisterForm />
13 | ).toJSON();
14 | expect(tree).toMatchSnapshot()
你知道我该如何解决这个问题吗?
这是我的测试:
import renderer from "react-test-renderer";
import React from "react";
import {RegisterForm} from "../../../../components/form";
import {PasswordField} from "../../../../components/textFields";
jest.mock('../../../../components/textFields', () => ('PasswordField'));
describe('HeaderContainer', () => {
it('render correctly', ()=>{
const tree = renderer.create(
<RegisterForm />
).toJSON();
expect(tree).toMatchSnapshot()
})
});
解决方案
您在测试中使用命名导入而不是默认导入。你可能需要
import RegisterForm from "...."
如果您在 RegisterForm 周围有一些 HOC 并且您实际上正在尝试使用命名导出,那么您必须导出组件以及默认导出(可能看起来像)
export const RegisterForm = (props) => {}; //named export
export default RegisterForm; //default export
您发布的错误指向您 -or you might have mixed up default and named imports.
推荐阅读
- dji-sdk - 如何从无人机获取原始视频
- reactjs - 反应原生 - 不变违规:不支持动态更改 onViewableItemsChanged
- android - 如何为android中的图像赋予不同的帧或大小?
- c# - 无法将内容从 restsharp 放到 db
- javascript - 如何使用 uber h3-js 在具有多个数据点的多边形内和具有质心纬度/经度、半径的圆内查找位置?
- c++ - 结构中的 OMP 数据依赖数组
- javascript - 如何从javascript中的绝对路径点找到svg viewbox?
- rest - 如果我使用 POST 进行幂等操作,我会有什么风险?
- reactjs - react.js 无法通过参数读取图片
- ios - 底部安全区域颜色通过半透明键盘 iOS