Хорошо, так что после 4 дней интенсивного поиска сообщений о проблемах на github и нескольких учебных пособий по YouTube, которые я смог найти, я запутался в том, как заставить это работать.
root jest.config. js
globals: {
'ts-jest': {
astTransformers: ['jest-preset-angular/InlineHtmlStripStylesTransformer'],
diagnostics: false,
stringifyContentPathRegex: '\\.html$',
},
},
moduleDirectories: ['node_modules', './'],
modulePaths: ['node_modules', './'],
preset: 'ts-jest',
projects: ['projects/projectA', 'projects/projectB'],
reporters: ['jest-silent-reporter'],
testEnvironment: 'node',
transform: {
'\\.ts$': ['ts-jest'],
'\\.html$': ['ts-jest'],
},
verbose: true,
projectA / B jest.config. js
module.exports = {
globals: {
'ts-jest': {
astTransformers: ['jest-preset-angular/InlineHtmlStripStylesTransformer'],
diagnostics: false,
stringifyContentPathRegex: '\\.html$',
tsConfig: '<rootDir>/projects/projectA/tsconfig.spec.json',
},
},
displayName: 'projectA',
moduleDirectories: ['node_modules', './'],
modulePaths: ['node_modules', './'],
name: 'projectA',
rootDir: './../../',
testMatch: ['<rootDir>/projects/projectA/**/*.spec.ts'],
transform: {
'\\.ts$': ['ts-jest'],
'\\.html$': ['ts-jest'],
},
};
Оказывается, действительно важным битом является "rootDir: './../ .. /'" кусок. Остальное было несколько определено c для исправления других ошибок, которые возникали, когда я работал с ними, но как только я правильно определил rootDir из подпроектов, он фактически начал видеть их все правильно. Так что это ключ. jest.config. js (независимо от того, где он находится в проекте) определяет rootDir относительно себя. Поэтому, когда он попал в папку проекта и получил доступ к конфигурации, он переназначил rootDir и потерялся. Определение root из подпроектов так же, как и родительский jest config, решает проблему. Документация Джеста не совсем ясна по этому вопросу.