【发布时间】:2021-10-15 00:16:44
【问题描述】:
我有这个场景问题:
在 Ionic/Angular 项目(ionic v3/Angular v5)中,我有组件 SuppliedVanContainerComponent,它扩展了抽象类 AbstractLoadingClass,而这个类扩展了另一个抽象类 AbstractSubscriberClass.
AbstractLoadingClass 使用LoadingController 一个离子角度服务来显示微调器,并在调用 showLoading 方法时由 SuppliedVanContainerComponent 使用。
问题:当我可以对 jasmine 使用单元测试时,它会显示这些错误:
TypeError: Cannot read properties of undefined (reading '_getPortal')
当我用 jasmine.createSpyObj 模拟 LoadingController 时,它显示了另一个错误并且是:
TypeError: this.loading.present 不是函数
我该如何修复它或者我可以使用抽象类进行测试?
SuppliedVanContainerComponent
export class SuppliedVanContainerComponent extends AbstractLoadingClass
constructor(loadingCtrl: LoadingController) {
super(loadingCtrl);
}
ngOnInit(){
this.showLoading();
}
AbstractLoadingClass
import {Loading, LoadingController} from 'ionic-angular';
import {LoadingOptions} from 'ionic-angular/umd/components/loading/loading-options';
import {AbstractSubscriberClass} from './abstract-subscriber.class';
export abstract class AbstractLoadingClass extends AbstractSubscriberClass {
private loading: Loading;
protected constructor(public loadingCtrl: LoadingController) {
super();
}
private getCreateLoading(opts?: LoadingOptions) {
return this.loadingCtrl.create(opts);
}
showLoading() {
this.loading = this.getCreateLoading({content: ''});
this.loading.present();
this.loading.setContent('');
}
hideLoading() {
this.loading.dismiss();
}
}
茉莉花测试出错
...
let fakeLoadingController = jasmine.createSpyObj<LoadingController>('LoadingController', {
create: {content: ''},
})
...
{provide: LoadingController, useValue: fakeLoadingController},
【问题讨论】:
标签: angular unit-testing jasmine ionic3 abstract-class