Ответ 1
Я нашел решение.
Моя первоначальная структура проекта:
.
|--src
| |--service.ts
|--tests
| |--service.test.ts
|--dist
|--tsconfig.json
|--package.json
Конфигурация Jest в package.json:
"jest": {
"globals": {
"ts-jest": {
"tsConfigFile": "tsconfig.json"
}
},
"moduleFileExtensions": ["ts","js"],
"transform": {
"^.+\\.(ts|tsx)$": "./node_modules/ts-jest/preprocessor.js"
},
"testMatch": [
"**/tests/**/*.test.(ts|js)"
],
"testEnvironment": "node"
}
С помощью этой конфигурации ts-jest
выполняет пересылку памяти в файлах.ts. У меня есть опция outDir
в compilerOptions
моего tsconfig.json
, но ничего не записано в этом outDir и потому, что я не могу использовать transpiled jest-config.js
Затем я перемещаю тестовую папку в src и изменяю конфигурацию Jest. Новая структура проекта:
.
|--src
| |--service.ts
| |--tests
| |--service.test.ts
| |--jest-config.ts
|--dist
|--tsconfig.json
|--package.json
Новая конфигурация Jest:
"jest": {
"globalSetup": "./dist/tests/jest-config.js",
"moduleFileExtensions": ["ts", "js", "json"],
"testMatch": [
"**/dist/**/*.test.js"
],
"testEnvironment": "node"
}
Теперь я могу использовать jest-config.js для глобальной настройки в Jest.
прибавление
-
Файл установки Jest (в моем примере jest-config.js) должен экспортировать одну асинхронную функцию:
module.exports = async function() {... }
-
Перед запуском тестов вам необходимо скомпилировать исходные файлы.ts.