将模块映射器添加到Jest?

时间:2018-10-22 14:13:51

标签: javascript node.js typescript jestjs

tsconfig.jsonpaths设置如下:

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

因此,所有@fs/blah/blah导入在VSCode中都可以很好地解析。为了使Jest使用相同的导入声明,我在moduleMapper上添加了jest.config.ts,这是完整的配置:

    module.exports = {
    roots: ["./src"],
    transform: {
        "^.+\\.tsx?$": "ts-jest"
    },
    testRegex: "(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$",
    moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"],
    moduleNameMapper: {
        "@fs/*": ["src/*"]
    }
    };

import { isBoolean } from "@fs/is";之类的语句无法解决。

使用相对导入进行更改时,Jest会解析它(import { isBoolean } from "./is";

有想法吗?

1 个答案:

答案 0 :(得分:1)

根据jest documentmoduleNameMapper的键是正则表达式。 (不是全局模式)
<rootDir>可以用来引用项目的根目录。 (docs

因此,我们可以进行如下配置:

moduleNameMapper: {
    "^@fs/(.*)$": "<rootDir>/src/$1"
}