9

尝试使用这些说明将此项目转换为玩笑。除了使用配置的文件外,我一切正常:paths

"paths": {
      "@fs/*": ["./src/*"], 
      "@test/*": ["./test/*"]
    }

看起来好像在运行测试时导入语句没有解析,并且记录如下:

Cannot find module '@fs/container/validation/ValidationContext' from 'Core.spec.ts'

  1 | import { ValidationOptions } from "@fs/container/validation/ValidationOptions";
> 2 | import { ValidationContext } from "@fs/container/validation/ValidationContext";
    | ^
  3 | import { ValidationContainer } from "@fs/container/validation/ValidationContainer";
  4 | 
  5 | import { Core1 } from "@test/core/Core1";

  at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:221:17)
  at Object.<anonymous> (test/core/Core.spec.ts:2:1)

有没有办法让 jest/ts-jest@paths在解析导入时包含在内?

4

3 回答 3

15

我想解析~/我的<baseUrl>/<moduleName>.

感谢OJ Kwon链接我解决了它(给他点)。

tsconfig.json

请参阅模块解析路径映射文档

{
  "compilerOptions": {
    "baseUrl": "src",
    "paths": {
      "~/*": ["*"]
    }
  },
}

笑话配置

然后我们也需要告诉jest解决路径。它通过以下配置完成:

"moduleNameMapper": {
  "~/(.*)": "<rootDir>/src/$1"
},
于 2021-03-10T09:26:21.480 回答
11

在根项目文件夹中添加 jest.config.js,内容如下。

const { pathsToModuleNameMapper } = require('ts-jest/utils')
const { compilerOptions } = require('./tsconfig')
module.exports = {
    preset: 'ts-jest',
    testEnvironment: 'node',
    moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths),
    modulePaths: [
        '<rootDir>'
    ],
}
于 2021-06-15T17:16:24.693 回答
9

jest 不能尊重 tsconfig 的路径映射,因为它是 ts 编译器时间,所以 jest 配置应该有相应的 modulenamemapper ( https://jestjs.io/docs/en/configuration.html#modulenamemapper-object-string-string ) 来解析别名路径.

于 2018-10-17T18:53:07.157 回答