我想private constructor
从功能覆盖中排除。
其实我更喜欢用private constructor
in 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
.
这使我的覆盖率降低。
我怎样才能排除这个?