为什么 Jest 尝试解析我的 index.ts 中的每个组件?

Fra*_*ico 5 javascript typescript reactjs jestjs

因此,我正在使用 Jest(带有 Enzyme)来测试 Typescript-React 项目,并且遇到了别名模块的问题。

我知道问题本身不是找到模块,因为它正确找到了模块。我认为问题可能出在我的一个文件的结构上。

笑话配置.js

module.exports = {
  "collectCoverage": false,
  "collectCoverageFrom": [
    "!**/*.d.ts",
    "src/**/*.{js,jsx,ts,tsx}"
  ],
  "coverageDirectory": "test",
  "moduleFileExtensions": [
    "ts",
    "tsx",
    "js",
    "jsx",
    "json",
    "node"
  ],
  "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
  "testEnvironment": "node",
  "testURL": "http://localhost",
  "transform": {
    "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
    "^.+\\.tsx?$": "ts-jest"
  },
  "transformIgnorePatterns": [
    "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$"
  ],
  "resolver": "jest-webpack-resolver",
  "moduleNameMapper": {
    "^react-native$": "react-native-web",
    "^components$": "<rootDir>/src/components",
    "^reducers$": "<rootDir>/src/reducers",
    "^actions$": "<rootDir>/src/actions",
    "^selectors$": "<rootDir>/src/selectors",
    "^services$": "<rootDir>/src/services",
    "^views$": "<rootDir>/src/views",
    "^domains$": "<rootDir>/src/domains"
  },
};
Run Code Online (Sandbox Code Playgroud)

我正在测试的组件中使用的导入:

import { Label } from 'components';
Run Code Online (Sandbox Code Playgroud)

我的项目结构在组件中的引导方式如下:

src
  |_ components
   |_ // ..various folders with React components
   |_ index.ts
Run Code Online (Sandbox Code Playgroud)

我的 index.tsx 基本上是这样的:

export { default as Label } from './Label/Label'
// export other components
Run Code Online (Sandbox Code Playgroud)

发生的事情如下:

当我运行 Jest 时,它可以很好地解析我的“组件”模块,这在我的 webpack.alias 中是相同的,但是破坏测试运行的是它开始“构建”(我不确定它是否真的构建了?)其他组件,并开始向上查找某些我什至没有测试的组件的依赖关系树,并最终中断,因为它一直向上到运行整个应用程序的主 index.tsx 文件。

问题是我构建 index.ts 来导出所有组件的方式吗?

Lor*_*onz 0

我也有同样的问题。这似乎与 jest 拥有自己的模块解析器有关。也许这有帮助: https: //jestjs.io/docs/ecmascript-modules