Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular if else在代码覆盖率报告的导入中未采用的路径_Angular_Jasmine_Code Coverage_Istanbul - Fatal编程技术网

Angular if else在代码覆盖率报告的导入中未采用的路径

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

我的代码覆盖率报告显示(E):else路径未被采用。(一) :如果未采用路径。 在import语句和decorator的上下文中,它意味着什么? 因此,我的代码覆盖率在任何测试中都没有达到100%。 如何纠正它?

我必须删除:

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”,工作正常,谢谢!