【发布时间】:2020-11-19 18:20:16
【问题描述】:
我目前正在使用一个组件,在该组件中单击按钮会打开一个弹出窗口来问候用户。我正在使用角度材质对话框打开弹出窗口,点击时调用的组件代码块是
public openMatDialog(): void {
this.isDialogOpen = true;
this.dialogReference = this.dialog.open(GreetComponent, {
autoFocus: false,
disableClose: false,
});
this.dialogReference.afterClosed().subscribe(
() => {
this.isDialogOpen = false;
}
);
}
我还需要检查布尔属性以指示打开和关闭的对话框。
在组件规范中,我为对话框提供了模拟,以防止像下面这样的实际依赖,
export class MatDialogMock {
open() {
return {
afterClosed: () => of(true)
};
}
}
在规范提供者中,
{ provide: MatDialog, useValue: matDialog },
在每个之前,
const matDialog = new MatDialogMock();
当我测试对话框打开时,如下所示,
it('Greet User', () => {
spyOn(matDialog, 'open');
component.openMatDialog();
expect(matDialog.open).toHaveBeenCalled();
});
它因错误而失败,
Error: Expected spy open to have been called.
请指导如何使用规范中的模拟检查对话框是否打开。
【问题讨论】:
标签: angular unit-testing mocking spyon mat-dialog