我有一个带有 Node + Angular 库的 NX 工作区。 从 NX 版本 13.x 升级到 14.x 时,NX 通过其自动迁移过程重新配置了 Jest。
运行项目:测试生成器时,我的笑话测试按预期工作。 但是,当尝试直接通过 IDE (IntelliJ) 运行单元测试时,出现以下错误:
Error: ● Validation Error:
Preset jest.preset.js not found.
Configuration Documentation:
https://jestjs.io/docs/configuration
项目使用项目级配置文件进行设置,如下所示。
module.exports = {
coverageDirectory: '<path>',
displayName : '<name>',
globals : {
'ts-jest': {
stringifyContentPathRegex: '\\.(html|svg)$',
tsconfig : '<rootDir>/tsconfig.spec.json'
}
},
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
snapshotSerializers : [
'jest-preset-angular/build/serializers/no-ng-attributes',
'jest-preset-angular/build/serializers/ng-snapshot',
'jest-preset-angular/build/serializers/html-comment'
],
transform : {
'^.+.(ts|mjs|js|html)$': 'jest-preset-angular'
},
transformIgnorePatterns: ['node_modules/(?!.*.mjs$)'],
preset : '../../../../../jest.preset.ts'
};
预设文件退出,如下所示:
const nxPreset = require('@nrwl/jest/preset');
module.exports = { ...nxPreset };
我还有一个全局
jest.config.ts
文件。 该文件确实引用了 jest.preset.js
,但它不存在于其范围内。 此外,不存在全局范围的 test-setup.ts
文件。 如下图:
const { getJestProjects } = require('@nrwl/jest');
module.exports = {
globals: {
'ts-jest': {
astTransformers: {
before: [
'jest-preset-angular/build/InlineFilesTransformer',
'jest-preset-angular/build/StripStylesTransformer'
]
},
stringifyContentPathRegex: '\\.(html|svg)$',
tsconfig: '<rootDir>/tsconfig.spec.json'
}
},
preset : 'jest.preset.js',
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
snapshotSerializers: [
'jest-preset-angular/build/serializers/no-ng-attributes',
'jest-preset-angular/build/serializers/ng-snapshot',
'jest-preset-angular/build/serializers/html-comment'
],
projects: [
...getJestProjects(),
//Lots of projects
]
};
我认为迁移过程中出现了一些问题,但我不太了解 jest 配置,不知道如何消除这些冲突。 全局配置文件中存在多个问题,但是当我消除全局配置文件时,我遇到了许多其他错误(因为它似乎尝试在 js 中运行我的 ts 测试)。
任何有关如何纠正此问题的想法将不胜感激。