javascript - ts-jest 无法解析 tsconfig 别名

标签 javascript typescript testing jestjs ts-jest

我有一个 typescript 项目,我在 ts.config.json 中设置了别名

{
  "compilerOptions": {    
    "paths": {   
      "@pkg/*": ["./packages/*"],
        },
    
  }
}

在我的 ts 文件中,我可以缩短导入路径
// example.ts
import {someThing} from '@pkg/mypackage'
它适用于 tsc并且 vscode 可以正确识别别名路径。
但是当我运行 npm t惠特跑jest它失败
Cannot find module '@pkg/mypackage' from 'example.ts'
jest.config.js
module.exports = {
  preset: "ts-jest",
  testEnvironment: "node",
  transform: {
    "^.+\\.tsx?$": "ts-jest",
  },
};
我将此添加到我的 package.json 文件中
"jest": {
    "moduleNameMapper": {
      "@pkg/(.*)": "<rootDir>/packages/$1"
    }
  }
我设法使用了pathsToModuleNameMapper ,但我有这个问题
https://github.com/kulshekhar/ts-jest/issues/2709

最佳答案

我遇到了同样的问题,但通过使用几个插件设法让它工作。最后我还有一些额外的匹配器用于一些额外的测试类型。
我的 Jest-base.config.js 安装并运行了 tsconfig-paths-jest 插件。这个插件解决了我的 tsconfig 路径问题。
我在单元测试和端到端测试之间使用通用基础文件进行通用配置,目前这两个测试都是通过 Jest 运行的。
jest-base.config.ts

const tsconfig = require('./tsconfig.json');
const moduleNameMapper = require('tsconfig-paths-jest')(tsconfig);

module.exports = {
    moduleNameMapper,
    preset: 'ts-jest',
    testEnvironment: 'node',

    rootDir: './',

    collectCoverage: true,
    collectCoverageFrom: [
        '<rootDir>/**/*.ts',
        '!<rootDir>/**/*.interface.ts',
        '!<rootDir>/**/*.mock.ts',
        '!<rootDir>/**/*.module.ts',
        '!<rootDir>/**/__mock__/*',
        '!<rootDir>/src/main.ts'
    ],
    coverageProvider: 'v8',
    coverageReporters: [
        'clover',
        'json',
        'lcov',
        'text',
        'text-summary'
    ],
    resetModules: true,
    setupFiles: [
        'dotenv/config'
    ],
    // Add the community jest-extended matchers
    setupFilesAfterEnv: [
        'jest-extended'
    ],
    verbose: false
};
我的 jest.config.js(用于单元测试)将扩展我的 jest-base.config.js 以添加单元测试特定的代码,例如覆盖率要求、存储覆盖率输出的位置等。
jest.config.js
const JestBaseConfiguration = require('./jest-base.config');

module.exports = Object.assign(JestBaseConfiguration, {
moduleFileExtensions: ['js', 'json', 'ts'],
testRegex: '.e2e-spec.ts$',
transform: {
    '^.+\\.(t|j)s$': 'ts-jest'
},
...

关于javascript - ts-jest 无法解析 tsconfig 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68185573/

相关文章:

Angular 7 错误引用错误 : SystemJS is not defined

javascript - Angular 2 中的表格

reactjs - 使用 TypeScript 在 React Native 上传递 refs : (property) React. MutableRefObject<null>.current : null Object is possibly 'null' . ts(2531)

iphone - Xcode 测试 - 遵循文档中的代码但出现错误

javascript - 添加点击链接到输入字段

JavaScript 电子邮件验证表单不起作用

php - 让javascript在外部链接点击时运行?

javascript - 创建具有相同动态类的元素数组或对象

testing - cucumber - 我应该在 "first"之前看到 "last"- Rails 3.1

unit-testing - 我想在同一个测试中运行 post 和 put 方法请求。有什么方法可以让我在 postman 中使用吗?