You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular12升级至16后测试全失败:找不到@angular/core/testing模块

解决Angular 16升级后Jest测试找不到@angular/core/testing的问题

核心原因

Angular 16与你当前使用的Jest 27.x、旧版jest-preset-angular版本不兼容,导致预设文件无法正确解析Angular的测试模块。Angular 16要求使用适配的Jest生态依赖版本组合。

步骤1:安装兼容的依赖版本

先卸载现有冲突依赖,再安装适配Angular 16的版本:

# 卸载旧依赖
npm uninstall jest jest-environment-jsdom jest-preset-angular ts-jest

# 安装兼容版本
npm install --save-dev jest@29.7.0 jest-environment-jsdom@29.7.0 jest-preset-angular@13.1.1 ts-jest@29.1.1

步骤2:更新jest.config.js配置

新版本的jest-preset-angular会自动处理大部分配置,简化你的配置文件如下:

const path = require('path');

module.exports = {
  preset: 'jest-preset-angular',
  setupFilesAfterEnv: ['<rootDir>/setup-jest.ts'],
  testEnvironment: 'jest-environment-jsdom',
  moduleNameMapper: {
    '^@app/(.*)$': '<rootDir>/src/app/$1',
    '^@environments/(.*)$': '<rootDir>/src/environments/$1',
    '^@src/(.*)$': '<rootDir>/src/$1',
    '^@assets/(.*)$': '<rootDir>/src/assets/$1',
    '^@styles/(.*)$': '<rootDir>/src/styles/$1',
  },
  transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
  globals: {
    'ts-jest': {
      tsconfig: '<rootDir>/tsconfig.spec.json',
      stringifyContentPathRegex: '\\.html$',
    },
  },
  globalSetup: path.resolve(__dirname, 'jest-global-setup.js'),
  resolver: path.resolve(__dirname, 'src/jest.resolver.js'),
};

注意:Jest 29中testEnvironment需指定为jest-environment-jsdom(而非旧版的jsdom),同时移除了手动的transform配置,因为jest-preset-angular会自动注入正确的转换器。

步骤3:检查setup-jest.ts文件

确保你的setup-jest.ts顶部导入正确的初始化文件:

import 'jest-preset-angular/setup-jest';

如果之前有自定义的初始化逻辑,保留在该导入语句之后。

步骤4:验证tsconfig.spec.json配置

确保tsconfig.spec.json的compilerOptions满足以下要求:

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

步骤5:清理缓存并重新运行测试

# 清除Jest缓存
npx jest --clearCache

# 重新运行测试
npm test

内容的提问来源于stack exchange,提问作者Emmanuel Huff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:22:16