Javascript 测试时,导入返回未定义的组件,而不是react组件 我正在为我的应用程序创建测试,并且在笑话中运行它们有问题。我的代码结构如下所示:
Javascript 测试时,导入返回未定义的组件,而不是react组件 我正在为我的应用程序创建测试,并且在笑话中运行它们有问题。我的代码结构如下所示:,javascript,reactjs,testing,redux,jestjs,Javascript,Reactjs,Testing,Redux,Jestjs,/src/ ├── 行动 │ ├── departments.js │ ├── departments.test.js ├── 动作类型 │ ├── departmentsTypes.js ├── 组件 │ ├── 常见的 │ │ ├── 形式 │ │ │ ├── Form.css │ │ │ ├── FormElement │ │ │ │ ├── FormElement.css │ │ │ │ ├── FormEl
/src/
├── 行动
│ ├── departments.js
│ ├── departments.test.js
├── 动作类型
│ ├── departmentsTypes.js
├── 组件
│ ├── 常见的
│ │ ├── 形式
│ │ │ ├── Form.css
│ │ │ ├── FormElement
│ │ │ │ ├── FormElement.css
│ │ │ │ ├── FormElement.js
│ │ │ │ ├── FormElement.test.js
│ │ │ │ └── __快照__
│ │ │ ├── Form.js
│ │ │ ├── Form.test.js
│ │ │ ├── index.js
│ │ │ └── __快照__
│ │ │ └── Form.test.js.snap
│ │ ├── index.js
│ │ ├── 图式工厂
│ │ │ ├── SchemaFormFactory.js
│ │ │ ├── SchemaFormFactory.test.js
│ │ │ └── __快照__
│ │ │ └── SchemaFormFactory.test.js.snap
│ │ └── 文本输入框
│ ├── 部门选择器
│ │ ├── DepartmentSelector.css
│ │ ├── DepartmentSelector.js
│ │ ├── DepartmentSelector.test.js
│ │ ├── index.js
│ │ └── __快照__
│ ├── index.js
│ ├── 主控制程序
│ │ ├── index.js
│ │ ├── MainApp.css
│ │ ├── MainApp.js
│ │ ├── MainApp.test.js
│ │ └── __快照__
├── 容器
│ ├── 部门表格
│ │ └── DepartmentForm.js
│ ├── 部门研究
│ │ ├── DepartmentsSearch.js
│ │ ├── DepartmentsSearch.test.js
│ │ ├── index.js
│ │ └── __快照__
├── 助手
│ └── test-helper.js
├── index.js
├── 还原剂
│ ├── departments.js
│ ├── departments.test.js
您的部门搜索
没有render()
方法,并且没有返回任何内容(因此为“未定义”)
您至少需要通过
render()
返回一些内容,无论是子节点、false
还是null
。否则,应用程序的其余部分不知道如何处理组件。问题在于如何导入依赖项。在这种情况下,DepartmentSelector
导入一个FormElement
和FormElement
导入DepartmentSearch
(我们的容器)。因为节点不知道如何导入依赖项(递归依赖项),所以它只返回一个错误。它在web浏览器中工作,因为webpack可以很好地处理递归依赖项,并从代码中提取它们。解决这个问题的最简单方法是在测试文件的顶部导入DepartmentSearch
//DepartmentSelector.test.js
从“../../containers/DepartmentSearch/DepartmentSearch”导入DepartmentSearch“
DepartmentSearch
是一个增强DepartmentSelector
的容器,其中包含部分redux
状态和操作创建者。它不应该有渲染,因为DepartmentSelector
有。就像我说过的,这不是代码本身的问题,而是运行测试的问题,因为整个代码在浏览器中都可以很好地执行。只有在运行测试时,才会出现错误不变量冲突:必须将组件传递给connect返回的函数。而是接收到未定义的
。