Angular:有没有一种方法可以自动为Angular中的构造函数依赖项创建伪方法和属性?

时间:2019-06-24 09:19:37

标签: angular typescript unit-testing jasmine karma-jasmine

constructor(private a:dependencyA,private  b:dependencyB,private  c:dependencyC){

}

dependencyA可能看起来像这样:

export class dependencyA {
  showPopup: boolean;
  defaultProperties = {
    showPopup: this.showPopup,
  };
  private propertiesSource = new BehaviorSubject(this.defaultProperties);
  currentProperties = this.propertiesSource.asObservable();
}

为了能够进行单元测试,我将不得不为每个构造函数依赖项编写存根,并手工编写每个存根中的伪数据或方法。

类似的东西:

class dependencyAStub{
  defaultProperties = {
    showPopup: false,
  };
  private propertiesSource = new BehaviorSubject(this.defaultProperties);
  currentProperties = this.propertiesSource.asObservable();
  push(value){
    this.propertiesSource.next(value);
  }
}

 TestBed.configureTestingModule({
      declarations: [ ComponentDetailsComponent ],
       providers: [{ provide: dependencyA, useClass: dependencyAStub }],
providers: [{ provide: dependencyB, useClass: dependencyBStub }],
providers: [{ provide: dependencyC, useClass: dependencyCStub }],
    })

是否有更好的方法为所有依赖项提供模拟存根?如果组件的构造函数中有8个依赖项,并且每个依赖项都具有类似4-5的函数和属性。我将不得不花费大量时间来编写存根。 如果我可以自动生成存根等,并且可以手动指定一个或多个依赖项的特定值进行测试,那将是很好的。

1 个答案:

答案 0 :(得分:0)

您可以尝试茉莉花模拟工厂,https://www.npmjs.com/package/jasmine-mock-factory

此库为您提供了不为独立依赖项创建存根的功能。该库还提供了不错的文档以供入门。