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

Angular项目Karma+Jasmine测试报错:未找到Spec,如何忽略node_modules

Angular测试:解决构建错误、Zero Specs Found问题,以及配置忽略node_modules

看起来你在Angular测试中碰到了两个头疼的问题:构建错误和浏览器显示"zero specs found",同时还需要配置忽略node_modules。我来一步步帮你排查和解决这些问题:

一、先搞定「Zero Specs Found」的问题

你的test.ts代码是Angular默认的测试入口逻辑,用来自动加载所有.spec.ts文件,但没找到测试用例通常有这几个原因:

  • 测试文件路径匹配问题:确认你的所有.spec.ts文件都在src目录下(包括组件子目录),默认的require.context('./', true, /\.spec\.ts$/);会递归查找src下所有符合命名的测试文件,只要你的测试文件命名规范(比如app.component.spec.ts),这个路径就没问题。
  • 缺失正确的tsconfig.spec.json配置:这个文件是测试专属的TypeScript配置,你没提供它的内容,但很大概率是这个文件配置不对导致测试文件没被识别。默认的tsconfig.spec.json应该包含以下内容,你可以创建或修改它:
{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/spec",
    "types": [
      "jasmine",
      "node"
    ]
  },
  "files": [
    "test.ts",
    "polyfills.ts"
  ],
  "include": [
    "**/*.spec.ts",
    "**/*.d.ts"
  ],
  "exclude": [
    "node_modules"
  ]
}

这里的include确保所有测试文件被纳入编译,exclude直接排除了node_modules,同时也能解决部分构建错误。

二、配置忽略node_modules文件

要让测试过程完全忽略node_modules,主要通过两个配置文件控制:

1. tsconfig.spec.json(核心配置)

上面已经提到,在exclude数组里添加"node_modules",TypeScript编译测试代码时就会跳过这个目录,避免因为第三方库的代码导致构建错误。

2. karma.conf.js(可选补充)

如果还是有涉及node_modules的构建问题,可以在Karma配置里添加exclude规则,不过默认Angular的构建器已经会处理这个场景,除非你有特殊需求:

module.exports = function(config) {
  config.set({
    // ... 保留你原有的其他配置
    exclude: [
      'node_modules/**/*' // 递归排除node_modules下所有文件
    ]
  });
};

三、检查你现有配置的潜在问题

看你提供的三个配置文件:

  • test.ts:代码是Angular默认的正确写法,没有问题,只要测试文件路径正确就能加载。
  • angular.json:test配置里的tsConfig指向src/tsconfig.spec.json是正确的,但前提是这个文件存在且配置正确(就是上面给的内容)。
  • karma.conf.js:默认配置没有问题,不需要额外修改,除非你要添加上面的exclude规则。

四、验证修复步骤

  1. 确保src/tsconfig.spec.json存在并配置正确。
  2. 清理项目缓存:运行ng clean,避免旧缓存影响。
  3. 重新运行测试:ng test,看看是否能找到测试用例,并且没有构建错误。

这样应该就能解决你的所有问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:22:35