如何创建使用Karma/Jasmine而非Jest/Cypress的Nx 15工作区
在Nx 15.x Angular单体工作区中用Karma/Jasmine替代Jest/Cypress
工作区全局配置步骤
用Angular预设创建Nx 15.x工作区时,--unit-test-runner参数确实不生效,要在工作区层面统一切换测试框架,按以下步骤操作:
- 安装Karma/Jasmine相关依赖
在工作区根目录执行命令,补全所需依赖:
npm install --save-dev @nrwl/angular/plugins/jasmine karma karma-chrome-launcher karma-jasmine karma-jasmine-html-reporter @types/jasmine jasmine-core
- 修改全局配置文件
打开根目录的nx.json,找到或新增generators配置块,设置Angular生成器的默认测试框架:
"generators": { "@nrwl/angular:application": { "unitTestRunner": "karma", "e2eTestRunner": "protractor" // 若无需替换Cypress,可删除此行 }, "@nrwl/angular:library": { "unitTestRunner": "karma" } }
配置完成后,后续新建的所有Angular应用或库,都会默认使用Karma/Jasmine作为单元测试框架。
- 适配已创建的项目(如有)
如果工作区中已有基于Jest的项目,需要逐个调整:
- 删除项目目录下的
jest.config.ts,新增karma.conf.js和src/test.ts(可参考Angular CLI生成的标准配置) - 修改项目的
project.json,将test目标的执行器替换为@nrwl/angular:karma,示例配置如下:
"test": { "executor": "@nrwl/angular:karma", "options": { "buildTarget": "你的项目名:build", "config": "apps/你的项目名/karma.conf.js" } }
- 可选操作:移除Jest相关依赖:
npm uninstall jest @nrwl/jest @types/jest
额外说明
- 若仅需替换单元测试框架、保留Cypress作为E2E测试工具,只需配置
unitTestRunner即可,无需设置e2eTestRunner。 - 上述全局配置为一次性操作,后续新增项目无需单独指定参数,会自动沿用Karma/Jasmine配置。
内容的提问来源于stack exchange,提问作者Christian Fuchs
相关产品推荐
相关产品推荐

