Пользовательская Тестовая Среда Jest Не Может Найти Абсолютный Импортированный Путь

#typescript #jestjs #ts-jest

Вопрос:

TL;DR: Я не могу импортировать абсолютные пути в пользовательской тестовой среде Jest. Упрощенное репо здесь: https://github.com/kyle-banner/ts-customtestenvironment-jest

Jest и/или Typescript не могут найти модули в каталоге src/* верхнего уровня моего проекта при создании пользовательской тестовой среды

Ошибка, которую я получаю, выглядит следующим образом:

  FAIL  path/to/test/something.integration.test.ts
  ● Test suite failed to run

    Cannot find module 'src/config'
 

Мой jest.config.js заключается в следующем:

 /* eslint-disable */
const { pathsToModuleNameMapper } = require('ts-jest/utils');

module.exports = {
  testEnvironment: './src/testUtils/testEnvironment.ts',
  preset: 'ts-jest',
  collectCoverageFrom: ['src/**/*.{js,jsx,ts,tsx}'],
  coveragePathIgnorePatterns: ['node_modules', 'src/typings', 'enumConversion'],
  testPathIgnorePatterns: ['build/', 'node_modules/'],
  moduleNameMapper: pathsToModuleNameMapper({
      "src/*": ["src/*"],
    }, { prefix: '<rootDir>/' } )
};
 

Мой tsconfig.json выглядит следующим образом:

 {
    "compilerOptions": {
        "allowJs": true,
        "esModuleInterop": true,
        "outDir": "build",
        "module": "commonjs",
        "moduleResolution": "node",
        "resolveJsonModule": true,
        "target": "es6",
        "typeRoots": [
            "./src/typings",
            "node_modules/@types"
        ],
        "baseUrl": ".",
        "paths": {
            "src/*": [
                "src/*"
            ]
        }
    },
    "include": [
        "src/**/*.ts",
        "src/**/*.js",
        "src/**/*.json"
    ],
    "exclude": [
        "**/*.test.ts"
    ]
}
 

Моя экспериментальная среда тестирования.ts выглядит следующим образом:

 const NodeEnvironment = require('jest-environment-node');
import config from 'src/config';

class CustomEnvironment extends NodeEnvironment {
  constructor(config, context) {
    super(config, context);
  }

  async setup() {
    await super.setup();
    this.global.someGlobalObject = { key: config };
  }

  async teardown() {
    await super.teardown();
  }
}

module.exports = CustomEnvironment;
 

Вся проблема в import config from 'src/config'; линии. Я перепробовал несколько различных вариантов конфигурации, но безуспешно. Я не знаю, как импортировать из любого файла в каталоге src/ верхнего уровня. Каталог src не распознается в инструкции импорта testEnvironment.ts.

Стоит отметить, что относительные пути импорта работают (например import config from './src/config'; ), но я не могу использовать относительные пути.

Использование jest 27.2.1, ts-jest 27.0.5