Angular if else在代码覆盖率报告的导入中未采用的路径
我的代码覆盖率报告显示(E):else路径未被采用。(一) :如果未采用路径。 在import语句和decorator的上下文中,它意味着什么? 因此,我的代码覆盖率在任何测试中都没有达到100%。 如何纠正它?我必须删除:Angular if else在代码覆盖率报告的导入中未采用的路径,angular,jasmine,code-coverage,istanbul,Angular,Jasmine,Code Coverage,Istanbul,我的代码覆盖率报告显示(E):else路径未被采用。(一) :如果未采用路径。 在import语句和decorator的上下文中,它意味着什么? 因此,我的代码覆盖率在任何测试中都没有达到100%。 如何纠正它?我必须删除: import { Component, OnInit } from '@angular/core'; import { Title } from '@angular/platform-browser'; @Com(I)ponent({ selector: 'app-f
import { Component, OnInit } from '@angular/core';
import { Title } from '@angular/platform-browser';
@Com(I)ponent({
selector: 'app-fruit-cake',(E)
templateUrl: './fruit-cake.component.html',
styleUrls: ['./fruit-cake.component.scss'],
})
expo(E)rt class FruitCakeComponent {
constructor(private _title: Title) {
_title.setTitle('Cake');
}
}
在此之前,我添加了此功能以帮助诊断其他问题。因此,我在package.json中的测试脚本如下所示:
--sourceMap=false
"test": "ng test --code-coverage"
"devDependencies": {
"@angular/compiler-cli": "^6.0.3",
"@angular-devkit/build-angular": "~0.6.8",
"typescript": "~2.7.2",
"@angular/cli": "~6.0.8",
"@angular/language-service": "^6.0.3",
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
"codelyzer": "~4.2.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~1.7.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.0",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.3.0",
"ts-node": "~5.0.1",
"tslint": "~5.9.1"
}
我把它改成:
"test": "ng test --code-coverage --sourceMap=false"
然后,我所有的代码覆盖都开始正确地报告。您可能还需要在package.json中验证您的devdependency。我使用的是Angular 6,因此它们看起来像这样:
--sourceMap=false
"test": "ng test --code-coverage"
"devDependencies": {
"@angular/compiler-cli": "^6.0.3",
"@angular-devkit/build-angular": "~0.6.8",
"typescript": "~2.7.2",
"@angular/cli": "~6.0.8",
"@angular/language-service": "^6.0.3",
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
"codelyzer": "~4.2.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~1.7.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.0",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.3.0",
"ts-node": "~5.0.1",
"tslint": "~5.9.1"
}
对于Angular 6,您似乎需要对您的
测试执行“sourceMap”:true
,如下所示:
--sourceMap=false
"test": "ng test --code-coverage"
"devDependencies": {
"@angular/compiler-cli": "^6.0.3",
"@angular-devkit/build-angular": "~0.6.8",
"typescript": "~2.7.2",
"@angular/cli": "~6.0.8",
"@angular/language-service": "^6.0.3",
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
"codelyzer": "~4.2.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~1.7.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.0",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.3.0",
"ts-node": "~5.0.1",
"tslint": "~5.9.1"
}
为什么export写得像expo(E)rt,组件写得像Com(I)Component?这来自伊斯坦布尔生成的覆盖率报告。(E) 和(I)是告诉您else路径未被采用和if路径未被采用的标记。请提供测试套件代码。请参考以下@JFPicard的答案,以了解配置此选项的最佳方法。使用“@angular devkit/build angular”:“~0.7.5”,工作正常,谢谢!