解决笑话中的循环依赖

Yos*_*tik 8 javascript unit-testing typescript reactjs jestjs

我的应用程序中有一些循环依赖项。它不会影响生产,应用程序运行正常。但现在我开始使用 jest 编写单元测试,现在我的一些导入返回了undefined。因此我无法编写一个测试。

即使当我尝试渲染整个应用程序时,导入中也有一些未定义的内容。

我无法删除这些循环依赖项,因为这会花费很多时间。

我该如何处理?

以下是 Jest 给出的一些错误示例

TypeError: Cannot read properties of undefined (reading 'sensorTypeRenderer')

      4 | import { Renderers, ColumnDescriptionGenerators } from '@components';
    > 6 | import sensorTypeRenderer = Renderers.sensorTypeRenderer;
Run Code Online (Sandbox Code Playgroud)

这是找不到服务,因为EventsGroupsStore未定义

ServiceNotFoundError: Service with "<UNKNOWN_IDENTIFIER>" identifier was not found...

    > 204 |                 return Container.get(EventsGroupsStore);
Run Code Online (Sandbox Code Playgroud)

Yos*_*tik 3

问题并不在于循环依赖。我刚刚错误地配置了别名。

事情应该是这样的:

    moduleNameMapper: {
        "^@src(.*)": "<rootDir>/src$1",
        "^@tests(.*)": "<rootDir>/tests$1",
        "^@data(.*)": "<rootDir>/tests/mockData$1",
        "^@domain(.*)": "<rootDir>/src/domain$1",
        "^@service(.*)": "<rootDir>/src/service$1",
        "^@utils(.*)": "<rootDir>/src/utils$1",
        "^@view(.*)": "<rootDir>/src/view$1",
        "^.+\\.(css|scss)$": "<rootDir>/tests/styleMock.js",
        "^@resources": "<rootDir>/tests/styleMock.js",
        "^@components(.*)": "<rootDir>/src/components$1",
    },
Run Code Online (Sandbox Code Playgroud)

我只是没有添加(.*)这些$1