首页 > 解决方案 > 如何修复:“core-js es6-reflect not found”,当在玩笑中使用“automock:true”时?

问题描述

我正在尝试为我的 Angular 测试使用开玩笑的选项“automock:true”,但是当我将此选项设置为 true 时,我得到了错误:

● 测试套件无法运行

core-js es6-reflect not found!

> 1 | import 'jest-preset-angular';
    | ^
  2 | 
  3 | import './jestGlobalMocks'; // browser mocks globally available for every test
  4 | 

  at Object.<anonymous> (node_modules/jest-preset-angular/setupJest.js:9:11)
  at Object.<anonymous> (node_modules/jest-preset-angular/index.js:1:45)
  at Object.<anonymous> (src/setupJest.ts:1:1)
      at Array.forEach (<anonymous>)

当我将选项设置为“假”时,我没有收到任何错误。我似乎无法弄清楚如何解决这个问题。

从我的 package.json 中:

"lint-staged": {
    "*.scss": [
      "stylelint --syntax=scss"
    ],
    "*.{ts,scss,html}": [
      "pretty-quick --staged",
      "git add"
    ],
    "*.ts": [
      "tslint"
    ],
    "ignore": [
      "documentation/*"
    ]
  },
  "jest": {
    "preset": "jest-preset-angular",
    "setupFilesAfterEnv": [
      "<rootDir>/src/setupJest.ts"
    ],
    "moduleNameMapper": {
      "bla/env(.*)$": "<rootDir>/src/environments/environment/$1",
      "bla/icons(.*)$": "<rootDir>/src/vendor/icons.ts",
      "bla/messages(.*)$": "<rootDir>/src/messages/$1"
    }
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^7.0.0",
    "@angular/cdk": "^7.0.1",
    "@angular/common": "~7.0.0",
    "@angular/compiler": "~7.0.0",
    "@angular/core": "~7.0.0",
    "@angular/forms": "~7.0.0",
    "@angular/http": "~7.0.0",
    "@angular/material": "^7.0.1",
    "@angular/material-moment-adapter": "^7.0.1",
    "@angular/platform-browser": "~7.0.0",
    "@angular/platform-browser-dynamic": "~7.0.0",
    "@angular/router": "~7.0.0",
    "@fortawesome/angular-fontawesome": "0.1.1",
    "@fortawesome/fontawesome-svg-core": "1.2.2",
    "@fortawesome/free-solid-svg-icons": "5.2.0",
    "@hackages/ngxerrors": "^7.0.0",
    "@netbasal/spectator": "^3.9.1",
    "@ng-select/ng-select": "^2.12.0",
    "bootstrap": "^4.1.3",
    "classlist.js": "^1.1.20150312",
    "core-js": "^2.5.4",
    "hammerjs": "^2.0.8",
    "jquery": "^3.3.1",
    "moment": "^2.22.2",
    "ngx-currency": "^1.5.1",
    "ngx-dropzone-wrapper": "^7.1.0",
    "ngx-toastr": "^9.1.1",
    "popper.js": "^1.14.4",
    "rxjs": "~6.3.3",
    "stylelint-scss": "^3.3.2",
    "stylelint-selector-bem-pattern": "^2.0.0",
    "web-animations-js": "^2.3.1",
    "zone.js": "~0.8.26"
  },
  "devDependencies": {
    "@angular-builders/jest": "^7.4.2",
    "@angular-devkit/build-angular": "~0.10.0",
    "@angular/cli": "~7.0.2",
    "@angular/compiler-cli": "~7.0.0",
    "@angular/language-service": "~7.0.0",
    "@compodoc/compodoc": "^1.1.8",
    "@netbasal/spectator": "~3.2.1",
    "@types/jest": "^24.0.13",
    "@types/node": "~8.9.4",
    "codelyzer": "^4.5.0",
    "gulp": "3.9.1",
    "gulp-footer": "1.1.2",
    "gulp-header": "1.8.12",
    "gulp-replace": "0.6.1",
    "husky": "^1.1.2",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "jest": "^24.8.0",
    "jest-extended": "^0.11.1",
    "lint-staged": "^7.3.0",
    "ng-mocks": "^7.8.0",
    "prettier": "^1.14.3",
    "pretty-quick": "^1.8.0",
    "protractor": "~5.4.0",
    "shallow-render": "^8.0.5",
    "stylelint": "^9.6.0",
    "stylelint-color-format": "^0.2.0",
    "stylelint-config-recommended": "^2.1.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.11.0",
    "typescript": "~3.1.1"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged",
      "pre-push": "npm run build"
    }
  }

我的 jest.config.js:

module.exports = {
  testMatch: ['**/+(*.)+(spec|test).+(ts|js)?(x)'],
  transform: {
    '^.+\\.(ts|js|html)$': 'ts-jest'
  },
  moduleFileExtensions: ['ts', 'js', 'html'],
  collectCoverage: true,
  coverageReporters: ['text-summary'],
  verbose: true,
  automock: true,
  snapshotSerializers: [
    'jest-preset-angular/AngularSnapshotSerializer.js',
    'jest-preset-angular/HTMLCommentSerializer.js'
  ]
};

还有我的 setupJest.ts:

import 'jest-preset-angular';

import './jestGlobalMocks';

标签: angulartypescriptunit-testingjestjs

解决方案


推荐阅读