Как настроить запуск jest для приложения Angular 7?
Я следовал схеме, чтобы установить jest для моего существующего приложения. При запуске тестов я сталкиваюсь с несколькими препятствиями, и у меня есть несколько вопросов.
- Как мне игнорировать папку для некоторых тестов? Я пытаюсь исключить всю папку приложения для тестирования в testPathIgnorePatterns для пробной версии, даже если она обрабатывает все тесты.
мой Jest.config.js выглядит так.
module.exports = {
"globals": {
"ts-jest": {
"tsConfigFile": "src/tsconfig.spec.json",
},
"__TRANSFORM_HTML__": true
},
"transform": {
"^.+\\.(ts|js|html)$": "<rootDir>/node_modules/jest-preset-angular/preprocessor.js"
},
"testMatch": [
"**/__tests__/**/*.+(ts|js)?(x)",
"**/+(*.)+(spec).+(ts|js)?(x)"
],
"moduleFileExtensions": [
"ts",
"js",
"html",
"json"
],
"moduleDirectories": [
"<rootDir>/node_modules",
"<rootDir>/src/app"
],
"transformIgnorePatterns": [
"node_modules/?!(@ngx-translate)/",
],
"modulePathIgnorePatterns": [
"<rootDir>/node_modules/",
"<rootDir>/dist/",
],
"watchPathIgnorePatterns": [
"<rootDir>/node_modules/",
"<rootDir>/dist/",
],
"testPathIgnorePatterns": [
"<rootDir>/node_modules/",
"<rootDir>/dist/",
"<rootDir>/src/",
],
"snapshotSerializers": [
"<rootDir>/node_modules/jest-preset-angular/AngularSnapshotSerializer.js",
"<rootDir>/node_modules/jest-preset-angular/HTMLCommentSerializer.js"
],
"preset": "jest-preset-angular",
"setupTestFrameworkScriptFile": "<rootDir>/src/test.ts",
"testURL": "http://localhost/"
};
- Абсолютные пути не работают.
Cannot find module 'app' from component.spec.ts
import { AppModule } from 'app';
import { AppRoutes } from 'app/app.routing';
Я попробовал вариант с путями, но он не работает.
{
"compileOnSave": false,
"compilerOptions": {
"rootDir": "../",
"baseUrl": "",
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"es6", // ES6 = ES2015
"dom",
"dom.iterable",
"scripthost",
"es2018.promise"
],
"mapRoot": "src",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist/out-tsc",
"sourceMap": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"types": [
"jest",
"core-js",
"node"
],
"paths": {
"app/*": [
"app/*"
],
"app": [
"app"
],
"environments/*": [
"environments/*"
]
}
},
"exclude": [
"node_modules",
"dist"
]
}
В моем tsconfig.spec.json модуль также называется commonjs.
- Я получаю сообщение об ошибке
SyntaxError: Unexpected token {
^
SyntaxError: Unexpected token {
> 18 | import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
Сегодня я провел день, пробуя вещи с stackru и github, но не смог заставить его работать. Прошу прощения, если в одном вопросе слишком много сомнений. Так выглядит моя структура папок.