如何修改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
相关产品推荐
相关产品推荐

