3

一个应用程序在 Angular 版本 12 上运行。测试是通过基于 Jest 的 Spectator完成的。

如何升级 Angular 13 并拥有一个有效的 Spectator (Jest) 测试环境?

如何重现?

这个示例 Angular 12 项目中,您克隆了一个 Angular 12 项目。然后在 README.md 中找到将项目升级到 Angular 13 的步骤。下一步是将 Spectator 从 7.1.0 升级到 10.0.0。这将失败,所以我附加了一个“--force--allow-dirty”。好的,似乎工作。启动“jest --watch”会显示错误。

好的,我在慢动作中做了什么:

尝试 1:当我使用 Spectator 7.1.0 将项目从 Angular 12 升级到 13 时,我在使用 Spectator 进行测试时不断收到此错误消息:

错误:找不到模块“@angular/core/testing”。

尝试 2:正确运行 Angular 12 并将 Spectator 从 7.1.0 升级到 10.0.0,所以另一条路线,我得到:

错误:来自@ngneat/spectator@10.0.0 的对等@angular/animations@">= 13.0.0"

尝试 3:将 Angular 升级到 13 并将 Spectator 一次性设置为 10.0.0 也不起作用。

在 Angular 12 和 Spectator 7.1.0 之前,我的环境运行良好。

1 - jest.config.js:

const jestPreset = require('jest-preset-angular/jest-preset');
const { globals } = jestPreset;
const tsjest = globals['ts-jest'];
const tsjestOverrides = {
  ...tsjest,
  tsConfig: '<rootDir>/tsconfig.spec.json'
};
const globalOverrides = {
  ...globals,
  'ts-jest': { ...tsjestOverrides }
};
module.exports = {
  ...jestPreset,
  globals: { ...globalOverrides },
  preset: 'jest-preset-angular',
  setupFilesAfterEnv: ['<rootDir>/src/setupJest.ts']
};

2 - jestSetup.js:

import 'jest-preset-angular';

3 - tsconfig.spec.ts:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "types": [
      "jest",
      "node"
    ],
    "esModuleInterop": true
  },
  "include": [
    "src/**/*.spec.ts",
    "src/**/*.d.ts"
  ]
}

4 - 我卸载了 Karma/Jasmine并删除了“test.ts”和“karma.config.ts”文件。这在各种手册中都有建议。

4

0 回答 0