我有一个打开对话框然后关闭对话框的方法,它会删除一个已经传递的元素。
我想做的是“监视”afterClosed().subscribe
方法,方法:
deleteDialog = MatDialog;
onDeleteElementClicked($event: any, elementName: string): void {
const dialogRef = this.deleteDialog.open(CustomDialog, {
data: {
//SOME DATA
});
dialogRef.afterClosed().subscribe(result => {
this.toggleFlagAndCall(result, () => {
this.deleteElement(this.result.name);
});
});
}
测试:
describe('DeleteComponent', () => {
let component: DeleteComponent;
let fixture: ComponentFixture<DeleteComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [
DeleteComponent,
],
imports: [
// some imports
],
providers: [
{ provide: MatDialogRef, useClass: MatDialogRef, useValue: { afterOpen: () => of(true)}},
{ provide: DeleteDialogComponent, useValue: { afterClosed: () => of(true)}},
{ provide: MatDialog, useValue: { afterClosed: () => of(true),
open: () => of(true)}},
}
]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(DeleteComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
it('should delete a single element', () => {
const event = {
preventDefault: () => {},
stopPropagation: () => {}
};
component.onDeleteElementClicked(event, 'toBeDeletedElement');
expect(component.elements.length).toBe(0);
});
});
我得到错误:
TypeError: dialogRef.afterClosed is not a function
但我认为这一行:
{ provide: MatDialog, useValue: { afterClosed: () => of(true),
将为“afterclosed”创建模拟方法并返回一个可观察对象,但它甚至不会被调用。
我怎样才能窥探 dialogRef.afterClosed().
?