Tener problemas para configurar proyectos de broma. El proyecto A tiene alguna configuración adicional que ejecuta (setupJest, crea algunos emparejadores personalizados, etc.) que el proyecto B no tiene. Cuando ejecuto jest, aparece este error para cada prueba que intenta ejecutar:
Test suite failed to run File not found: <rootDir>/src/tsconfig.spec.json (resolved as: repo\src\tsconfig.spec.json)No hay una carpeta src en la raíz del repositorio, solo dentro de las carpetas de proyectos individuales. Tampoco hago referencia a src\tsconfig.spec.json en ninguna parte de mis configuraciones. Así que estoy un poco confundido en este punto en cuanto a qué probar. Intenté poner rootDir en todo y deletrear las rutas, pero nada parece funcionar. Cualquier sugerencia, idea o ayuda sería REALMENTE bienvenida.
Como referencia, el repositorio es una carpeta en una unidad de Windows que contiene el repositorio. por ejemplo, c:\nombre de la empresa\nombre del producto\
Esta es mi estructura
repo |- jest.config.js |- projects |- projectA |- jest.config.js |- tsconfig.spec.json |- src |- setupJest.js |- projectB |- jest.config.js |- tsconfig.spec.jsonroot jest.config.js:
module.exports = { preset: 'jest-preset-angular', projects: [ '<rootDir>/projects/projectA/jest.config.js', '<rootDir>/projects/projectB/jest.config.js' ] reporters: ['jest-silent-reporter'], };proyectoA broma.config.js:
module.exports = { globals: { 'ts-jest': { tsConfig: 'tsconfig.spec.json', stringifyContentPathRegex: '\\.html$', astTransformers: ['jest-preset-angular/InlineHtmlStripStylesTransformer'], diagnostics: false, }, }, setupFilesAfterEnv: ['src/setupJest.ts'], };proyectoB jest.config.js:
module.exports = { globals: { 'ts-jest': { tsConfig: 'tsconfig.spec.json', stringifyContentPathRegex: '\\.html$', astTransformers: ['jest-preset-angular/InlineHtmlStripStylesTransformer'], diagnostics: false, }, }, };De acuerdo, después de 4 días de búsqueda intensa a través de los problemas informados en github y un puñado de tutoriales de youtube que pude encontrar, me confundí para hacer que esto funcionara.
raíz 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,proyectoA/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'], }, };Resulta que la parte realmente importante es la pieza "rootDir: './../../'". El resto fue algo específico para corregir los otros errores que surgieron mientras los solucionaba, pero una vez que definí correctamente el rootDir de los subproyectos, en realidad comenzó a verlos todos correctamente. Esa es la clave. jest.config.js (independientemente de dónde se encuentre en el proyecto) define rootDir relativo a sí mismo. Entonces, cuando llegó a una carpeta de proyecto y accedió a la configuración, reasignó el rootDir y se perdió. Definir la raíz de los subproyectos como lo mismo que la configuración principal de jest soluciona el problema. La documentación de Jest no es exactamente clara en este punto.
jest.config.json en cada proyecto.
module.exports = { preset: 'ts-jest', globals: { 'ts-jest': { tsconfig: require.resolve('./tsconfig.jest.json'), }, }, }; require.resolve encontrará el camino correcto