一个应用程序在 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”文件。这在各种手册中都有建议。