use*_*412 17 unit-testing karma-jasmine karma-coverage angular-cli angular11
在升级到 Angular 11 之前,我通过以下命令运行了代码覆盖率的单元测试:
ng test --project my-app --code-coverage true
Run Code Online (Sandbox Code Playgroud)
当我将我的项目升级到 Angular 11 时,我仍然能够进行我的代码覆盖率测试,但是我开始收到一条消息,说“'karma-coverage-istanbul-reporter' 的使用自版本 11 以来已被弃用”。它要求我安装 karma-coverage 并更新 karma.conf.js。所以我做了它所要求的。我通过以下命令安装了 karma-coverage 和 karma:
npm install karma karma-coverage --save-dev
Run Code Online (Sandbox Code Playgroud)
结果,我在 package.json 中的 devDependencies 下看到了 karma 条目:
ng test --project my-app --code-coverage true
Run Code Online (Sandbox Code Playgroud)
我更新了我的 karma.conf.js 文件。以下是存在的内容,除了我的评论外,一切都和原来一样:
npm install karma karma-coverage --save-dev
Run Code Online (Sandbox Code Playgroud)
进行此更新后,发生了两件事,我不知道为什么。
当我运行正常的代码覆盖率命令时,我收到以下错误:“服务器在端口 9876 上启动失败:错误:必须安装 karma-coverage 才能运行代码覆盖率。” 我确实安装了它,正如我的 package.json 所示,但由于某种原因,我的项目无法识别这一点。此外,如果我将 karma-coverage-istanbul-reporter require 方法添加回我的 conf.js 文件,coverage 工作正常,但我仍然收到该弃用消息。谁能向我解释为什么我可能会收到此错误?
当我在没有覆盖的情况下运行测试时,我现在收到多个以前从未收到过的警告,例如:“无法从文件扩展名确定文件类型,默认为 js。要使警告静音,请指定 C:/Angular/ 的有效类型配置文件中的 my-project/projects/my-app/src/app/app.component.spec.ts。” 我需要做什么来解决这个问题?
编辑:我找到了答案。在coverageReporter 对象中,您需要将fixWebpackSourcePaths 属性添加为true:
"karma": "^5.2.3",<br>
"karma-coverage": "^2.0.3"
Run Code Online (Sandbox Code Playgroud)
JSO*_*ulo 15
对我来说,诀窍是让'coverage'
记者离开。它应该只是:
reporters: ['progress', 'kjhtml'],
Run Code Online (Sandbox Code Playgroud)
然后按预期创建覆盖率报告,而不会抛出奇怪的警告。
这似乎是 Angular 的方式,看看karma.conf.js
由ng new
原理图生成的。
归档时间: |
|
查看次数: |
12006 次 |
最近记录: |