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的函数和属性。我将不得不花费大量时间来编写存根。 如果我可以自动生成存根等,并且可以手动指定一个或多个依赖项的特定值进行测试,那将是很好的。
答案 0 :(得分:0)
您可以尝试茉莉花模拟工厂,https://www.npmjs.com/package/jasmine-mock-factory
此库为您提供了不为独立依赖项创建存根的功能。该库还提供了不错的文档以供入门。