#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