在玩笑中解决循环依赖
Solving circular dependency in jest
我的应用程序中有一些循环依赖项。它不影响生产,应用程序运行正常。但是现在我开始使用 jest 编写单元测试,现在我的一些导入 returns undefined
。因此,我无法编写单个测试。
即使我尝试渲染整个应用程序,导入中也有一些未定义的内容。
我无法删除这些循环依赖,因为这会花费很多时间。
我该如何处理?
以下是 Jest 给出的一些错误示例
TypeError: Cannot read properties of undefined (reading 'sensorTypeRenderer')
4 | import { Renderers, ColumnDescriptionGenerators } from '@components';
> 6 | import sensorTypeRenderer = Renderers.sensorTypeRenderer;
找不到这里的服务,因为EventsGroupsStore
未定义
ServiceNotFoundError: Service with "<UNKNOWN_IDENTIFIER>" identifier was not found...
> 204 | return Container.get(EventsGroupsStore);
问题不在于循环依赖。我刚刚错误地配置了别名。
应该是这样的:
moduleNameMapper: {
"^@src(.*)": "<rootDir>/src",
"^@tests(.*)": "<rootDir>/tests",
"^@data(.*)": "<rootDir>/tests/mockData",
"^@domain(.*)": "<rootDir>/src/domain",
"^@service(.*)": "<rootDir>/src/service",
"^@utils(.*)": "<rootDir>/src/utils",
"^@view(.*)": "<rootDir>/src/view",
"^.+\.(css|scss)$": "<rootDir>/tests/styleMock.js",
"^@resources": "<rootDir>/tests/styleMock.js",
"^@components(.*)": "<rootDir>/src/components",
},
我只是没有添加这些 (.*)
和
我的应用程序中有一些循环依赖项。它不影响生产,应用程序运行正常。但是现在我开始使用 jest 编写单元测试,现在我的一些导入 returns undefined
。因此,我无法编写单个测试。
即使我尝试渲染整个应用程序,导入中也有一些未定义的内容。
我无法删除这些循环依赖,因为这会花费很多时间。
我该如何处理?
以下是 Jest 给出的一些错误示例
TypeError: Cannot read properties of undefined (reading 'sensorTypeRenderer')
4 | import { Renderers, ColumnDescriptionGenerators } from '@components';
> 6 | import sensorTypeRenderer = Renderers.sensorTypeRenderer;
找不到这里的服务,因为EventsGroupsStore
未定义
ServiceNotFoundError: Service with "<UNKNOWN_IDENTIFIER>" identifier was not found...
> 204 | return Container.get(EventsGroupsStore);
问题不在于循环依赖。我刚刚错误地配置了别名。
应该是这样的:
moduleNameMapper: {
"^@src(.*)": "<rootDir>/src",
"^@tests(.*)": "<rootDir>/tests",
"^@data(.*)": "<rootDir>/tests/mockData",
"^@domain(.*)": "<rootDir>/src/domain",
"^@service(.*)": "<rootDir>/src/service",
"^@utils(.*)": "<rootDir>/src/utils",
"^@view(.*)": "<rootDir>/src/view",
"^.+\.(css|scss)$": "<rootDir>/tests/styleMock.js",
"^@resources": "<rootDir>/tests/styleMock.js",
"^@components(.*)": "<rootDir>/src/components",
},
我只是没有添加这些 (.*)
和