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

如何修改Angular-CLI测试目录路径?现有配置尝试未生效

如何在Angular CLI中拆分测试路径到不同文件夹

我明白你想把Angular CLI的测试文件拆分到test/jest和test/karma两个独立文件夹中,让Karma只运行test/karma下的测试,Jest处理test/jest下的用例。你之前的配置没生效,大概率是路径匹配或配置项的优先级问题,咱们一步步调整正确的设置:

1. 调整 .angular-cli.json 配置

首先在根目录的.angular-cli.json中,明确指定Karma要加载的测试文件路径,并排除Jest的测试文件:

"test": {
  "karma": {
    "config": "./karma.conf.js"
  },
  "codeCoverage": {
    "exclude": [
      "**/test/jest/**/*.spec.ts"
    ]
  },
  "files": [
    "src/test.ts",
    "src/test/karma/**/*.spec.ts"
  ]
}

注意:如果你的test文件夹是在项目根目录(而非src内部),路径要改成"test/karma/**/*.spec.ts",确保相对路径正确。

2. 修正 karma.conf.js 配置

在Karma配置文件中,既要明确包含的测试文件,也要排除Jest的测试目录,避免冲突:

module.exports = function (config) {
  config.set({
    // 保留原有基础配置(比如frameworks、preprocessors等)
    files: [
      { pattern: './src/test/karma/**/*.spec.ts', watched: false }
    ],
    exclude: [
      './src/test/jest/**/*.spec.ts'
    ],
    // 其他配置(比如reporters、port等)...
  });
};

3. 更新 src/test.ts 的上下文加载

test.ts是Angular CLI测试的入口文件,需要修改它的上下文,只加载test/karma下的测试文件:

// 替换原有require.context代码
const context = require.context('./test/karma/', true, /\.spec\.ts$/);
context.keys().map(context);

同样,如果test文件夹在根目录,路径要调整为../test/karma/。

4. 配置 src/tsconfig.spec.json

在TypeScript的测试配置中,排除Jest的测试文件,避免编译时处理它们:

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/spec",
    "types": [
      "jasmine",
      "node"
    ]
  },
  "files": [
    "test.ts"
  ],
  "include": [
    "test/karma/**/*.spec.ts",
    "**/*.spec.ts"
  ],
  "exclude": [
    "test/jest/**/*.spec.ts",
    "node_modules"
  ]
}

额外:Jest的配套配置(如果使用Jest)

如果同时用Jest运行test/jest下的测试,需要在jest.config.js中指定Jest的测试路径:

module.exports = {
  roots: ['<rootDir>/test/jest'],
  testMatch: ['**/*.spec.ts'],
  preset: 'jest-preset-angular',
  // 其他Jest相关配置...
};

完成这些配置后,运行ng test时,Karma就只会执行test/karma下的测试文件了,而Jest可以通过jest命令单独运行test/jest下的用例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:58:09