【问题标题】:How to get Jest to work with Angular 9 in a Storybook project如何让 Jest 在 Storybook 项目中使用 Angular 9
【发布时间】:2021-03-21 05:17:04
【问题描述】:

我们正在使用带有 Angular 9 的 Storybook 5,并且一些测试正在使用 Jest 26。

问题是,当我们使用 Typescript ng build --prod)时,我们会收到一堆看起来像这样的 Jest 类型的错误:

node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts:7:36 - error TS1005: ';' expected.

当我们升级到 Typescript 3.8.3 时,类型可以工作,但 Angular 无法再为 prod 构建,说它需要较低的 Typescript 版本。

有人对如何处理这个问题有任何想法吗?

依赖关系:

"dependencies": {
    "@angular/animations": "~9.0.3",
    "@angular/cdk": "^9.2.4",
    "@angular/common": "~9.0.3",
    "@angular/compiler": "~9.0.3",
    "@angular/core": "~9.0.3",
    "@angular/forms": "~9.0.3",
    "@angular/material": "^10.0.1",
    "@angular/platform-browser": "~9.0.3",
    "@angular/platform-browser-dynamic": "~9.0.3",
    "@angular/router": "~9.0.3",
    "rxjs": "~6.5.4",
    "zone.js": "~0.10.2"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.900.7",
    "@angular-devkit/build-ng-packagr": "~0.900.7",
    "@angular/cli": "^9.0.7",
    "@angular/compiler-cli": "~9.0.3",
    "@angular/language-service": "~9.0.3",
    "@babel/core": "^7.10.3",
    "@babel/preset-env": "^7.10.3",
    "@babel/preset-typescript": "^7.10.1",
    "@storybook/addon-a11y": "^5.3.19",
    "@storybook/addon-actions": "^5.3.19",
    "@storybook/addon-links": "^5.3.19",
    "@storybook/addon-notes": "^5.3.19",
    "@storybook/addon-docs": "^5.3.19",
    "@storybook/addon-jest": "^5.3.19",
    "@storybook/addon-knobs": "^5.3.19",
    "@storybook/addon-storysource": "^5.3.19",
    "@storybook/addon-viewport": "^5.3.19",
    "@storybook/addons": "^5.3.19",
    "@storybook/angular": "^5.3.19",
    "@storybook/storybook-deployer": "^2.8.6",
    "@testing-library/angular": "^9.4.0",
    "@testing-library/jest-dom": "^5.10.1",
    "@types/jasmine": "^3.5.11",
    "@types/jest": "^26.0.18",
    "@types/node": "^11.15.39",
    "@zeplin/cli": "^1.0.3",
    "@zeplin/cli-connect-angular-plugin": "^0.1.4",
    "@zeplin/cli-connect-storybook-plugin": "^0.3.0",
    "babel-loader": "^8.1.0",
    "codelyzer": "^5.1.2",
    "cpx": "^1.5.0",
    "jasmine": "^3.6.0",
    "jasmine-core": "~3.5.0",
    "jasmine-spec-reporter": "~4.2.1",
    "jest": "^26.1.0",
    "jest-image-snapshot": "^4.0.2",
    "jest-preset-angular": "^7.1.1",
    "jest-puppeteer": "^4.4.0",
    "karma": "~4.3.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage-istanbul-reporter": "~2.1.0",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.4.2",
    "ng-packagr": "^9.0.0",
    "protractor": "~5.4.3",
    "puppeteer": "^4.0.1",
    "scss-bundle": "^3.1.2",
    "start-server-and-test": "^1.11.0",
    "ts-node": "~8.3.0",
    "tslib": "^1.10.0",
    "tslint": "~5.18.0",
    "typescript": "3.8.3",
    "jest-diff": "25.1.0",
    "pretty-format": "25.1.0"
  },
  "jest": {
    "verbose": true,
    "preset": "jest-preset-angular",
    "setupFilesAfterEnv": [
      "<rootDir>/projects/ng-custom-lib/src/jest-config/setup.ts"
    ],
    "transformIgnorePatterns": [
      "node_modules/(?!@storybook/*)"
    ],
    "testPathIgnorePatterns": [
      "<rootDir>/node_modules/",
      "<rootDir>/dist/",
      "<rootDir>/storybook-static/",
      "<rootDir>/projects/ng-custom-lib/src/test.ts"
    ],
    "coveragePathIgnorePatterns": [
      "/jest-config/",
      "/node_modules/"
    ],
    "snapshotSerializers": [
      "<rootDir>/node_modules/jest-preset-angular/AngularSnapshotSerializer.js",
      "<rootDir>/node_modules/jest-preset-angular/HTMLCommentSerializer.js"
    ],
    "globals": {
      "ts-jest": {
        "tsConfig": "<rootDir>/tsconfig.spec.json",
        "stringifyContentPathRegex": "\\.html$",
        "diagnostics": false,
        "isolatedModules": true,
        "astTransformers": [
          "<rootDir>/node_modules/jest-preset-angular/InlineHtmlStripStylesTransformer"
        ]
      }
    },
    "moduleNameMapper": {
      "\\.(css|less)$": "<rootDir>/projects/ng-custom-lib/src/jest-config/styleMock.js",
      "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/projects/ng-custom-lib/src/jest-config/fileMock.js"
    },
    "transform": {
      "^.+\\.(ts|html)$": "ts-jest",
      "^.+\\.js$": "babel-jest"
    },
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "jsx",
      "json",
      "node",
      ".html"
    ]
  }

【问题讨论】:

    标签: angular typescript jestjs storybook


    【解决方案1】:

    原来我能够通过将 Angular 从 9.0 更新到 9.1 来规避这个问题,因为 9.1 使用 Typescript version 3.8.3。执行更新后,测试和构建都按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-06
      • 2023-02-16
      • 2020-10-15
      • 2020-06-04
      • 2020-06-10
      • 2020-02-17
      • 1970-01-01
      • 2021-01-02
      相关资源
      最近更新 更多