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

如何运行共享文件夹的测试?多项目共用组件Jasmine测试不识别问题

解决共享组件Jasmine单元测试识别问题

1. 检查Jasmine测试扫描配置

Jasmine不会自动扫描项目外的文件,得在测试配置里明确指定共享组件的测试文件路径:

  • 如果用Karma,修改karma.conf.js的files和preprocessors字段:
module.exports = function(config) {
  config.set({
    files: [
      'src/**/*.spec.ts', // 原有项目测试文件
      '../shared/**/*.spec.ts' // 新增共享组件测试路径
    ],
    preprocessors: {
      'src/**/*.spec.ts': ['webpack'],
      '../shared/**/*.spec.ts': ['webpack'] // 同步处理共享测试文件
    }
  });
};
  • 如果是Angular项目,修改angular.json的test配置:
"test": {
  "builder": "@angular-devkit/build-angular:karma",
  "options": {
    "main": "src/test.ts",
    "include": [
      "src/**/*.spec.ts",
      "../shared/**/*.spec.ts"
    ]
  }
}

2. 修正tsconfig.spec.json的路径配置

之前的引入没生效大概率是路径规则错误,确保配置覆盖共享文件:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@shared/*": ["../shared/*"] // 配置别名方便导入共享组件
    }
  },
  "include": [
    "src/**/*.spec.ts",
    "../shared/**/*.spec.ts",
    "../shared/**/*.d.ts" // 确保类型文件被识别
  ]
}

注意路径是相对当前项目tsconfig的位置,别写错层级。

3. 排查共享库的编译与引用

如果把共享文件夹做成库后无效,检查这两点:

  • 库的tsconfig.lib.json要正确输出类型文件,主项目tsconfig.json的paths指向库的编译产物而非源码:
// 主项目tsconfig.json
{
  "compilerOptions": {
    "paths": {
      "@shared-lib": ["../shared/dist"]
    }
  }
}
  • 在测试脚本里加前置编译命令,确保共享库先被编译:
// package.json
"scripts": {
  "test": "npm run build:shared && ng test"
}

4. 检查测试入口文件的加载逻辑

比如Angular的test.ts如果用require.context加载测试文件,要新增共享文件夹的上下文:

// 原有项目测试加载
const context = require.context('./', true, /\.spec\.ts$/);
context.keys().map(context);
// 新增共享组件测试加载
const sharedContext = require.context('../shared', true, /\.spec\.ts$/);
sharedContext.keys().map(sharedContext);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:33:14