如何使用nyc从函数覆盖范围中排除使用TypeScript编写的私有构造函数? 示例代码 nyc选项

我想从{strong>功能范围中排除private constructor
实际上,我更喜欢在private constructor中使用Factory Pattern

示例代码

class Instance { }
class InstanceA extends Instance { 
  public constructor() { super(); }
}
class InstanceB extends Instance { 
  public constructor() { super(); }
}
class InstanceC extends Instance { 
  public constructor() { super(); }
}

class Factory {
  private constructor() {
    /* I want to exclude this constructor */
  }

  public static createInstance(option: number): Instance {
    switch(option) {
      case 1:
        return new InstanceA();
      case 2:
        return new InstanceB();
      case 3:
        return new InstanceC();
      default:
        return undefined;
    }
  }
}


class ClientCode {
  private name: string;
  private age: number;
  private myInstance: Instance;

  public constructor(name: string,age: number,option: number) {
    this.name = name;
    this.age = age;
    this.myInstance = Factory.createInstance(option);
  }

  public foo(): void {
    /* do something */
  }
}

nyc选项

  "nyc": {
    "cache": false,"extension": [
      ".ts",".tsx"
    ],"include": [
      "script/**/*.ts"
    ],"exclude": [
      "**/*.d.ts","script/entries/","**/GlobalEnums.ts"
    ],"require": [
      "ts-node/register/transpile-only","source-map-support/register"
    ],"reporter": [
      "html","text","text-summary"
    ],"temp-dir": "./coverage/.nyc_output"
  }

正如我在comment中提到的,我想排除private constructor
这会使我的覆盖率降低。

我该如何排除呢?

hhxxttxsj 回答:如何使用nyc从函数覆盖范围中排除使用TypeScript编写的私有构造函数? 示例代码 nyc选项

由于nyc只是伊斯坦布尔的CLI包装,您应该可以使用其special comments禁用它:

class Factory {
  /* istanbul ignore next */
  private constructor() {
    /* I want to exclude this constructor */
  }
本文链接:https://www.f2er.com/3009590.html

大家都在问