【发布时间】:2022-07-06 01:19:35
【问题描述】:
我有一个带有 Node + Angular 库的 NX 工作区。从 NX 版本 13.x 升级到 14.x 时,NX 通过其自动迁移过程重新配置了 Jest。
运行 project:test 生成器时,我的 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 测试)。
任何关于我如何纠正这个问题的想法都将不胜感激。
【问题讨论】: