【发布时间】:2021-11-10 17:20:34
【问题描述】:
我已经定义了许多不同的方法来打开海关小吃店,有和没有持续时间,有和没有解雇事件,例如:
showError(title: string, message: string): void {
this.zone.run(() => {
this.snackBar.openFromComponent(NotificationSnackbarComponent, {
duration: 3000,
data: {
title,
message,
snackType: 'error',
closeSnackbar: () => {
this.snackBar.dismiss();
},
},
});
});
}
我怎样才能对这个事件进行单元测试:
closeSnackbar: () => { this.snackBar.dismiss(); },
我尝试过这种方法:
it('should show notification smackbar from showError', () => {
const spy = spyOn(snackBar, 'openFromComponent');
const snackBarSpy = spyOn(snackBar, 'dismiss');
service.showError('Title', 'Message');
expect(spy).toHaveBeenCalled();
snackBar.dismiss();
expect(snackBarSpy).toHaveBeenCalled()
});
但我需要测试closeSnackbar 而不是dismiss。我不知道如何才能访问该方法。我在每个配置之前都有这个:
let service: NotificationService;
let snackBar: MatSnackBar;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
MatSnackBarModule
],
providers: [
{ provide: MatSnackBarRef, useValue: {} },
{ provide: MAT_SNACK_BAR_DATA, useValue: {} },
]
});
service = TestBed.inject(NotificationService);
snackBar = TestBed.inject(MatSnackBar);
});
有什么想法吗?谢谢。
【问题讨论】:
标签: angular unit-testing jasmine karma-jasmine