Как настроить запуск jest для приложения Angular 7?

Я следовал схеме, чтобы установить jest для моего существующего приложения. При запуске тестов я сталкиваюсь с несколькими препятствиями, и у меня есть несколько вопросов.

  1. Как мне игнорировать папку для некоторых тестов? Я пытаюсь исключить всю папку приложения для тестирования в 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/"
};
  1. Абсолютные пути не работают. 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.

  1. Я получаю сообщение об ошибке SyntaxError: Unexpected token {
                                                                                                    ^

    SyntaxError: Unexpected token {

    > 18 | import { TranslateModule, TranslateLoader } from '@ngx-translate/core';

Сегодня я провел день, пробуя вещи с stackru и github, но не смог заставить его работать. Прошу прощения, если в одном вопросе слишком много сомнений. Так выглядит моя структура папок.

0 ответов

Другие вопросы по тегам