【问题标题】:How to test angular material dialog?如何测试角度材料对话框?
【发布时间】:2018-06-17 18:53:39
【问题描述】:

我有一个正在尝试测试的自定义对话框组件类。特别是我的关闭功能,这是

  close(): void {
    this.dialogRef.close();
  }

dialogRef 被注入到该类的构造函数中,如下所示

 constructor(public dialogRef: MatDialogRef<CustomDialogComponent>,
              @Inject(MAT_DIALOG_DATA) public data: any) {
  }

所以我的问题是,如何在我的规范测试文件中模拟 dialogRef 并测试其关闭功能?

我的项目使用 angular 5,angular material 5。

【问题讨论】:

    标签: javascript angular typescript angular-material


    【解决方案1】:

    您不需要对此进行测试,因为您使用的库应该已经测试了它自己的组件(并非总是如此)。

    但是,如果您需要使用关闭对话框引用的特定测试,请查看他们对此组件的测试,这应该可以帮助您编写自己的测试:

    https://github.com/angular/components/blob/master/src/material/dialog/dialog.spec.ts#L186

    【讨论】:

    • flush 是所有 observables 的答案,谢谢!
    【解决方案2】:

    假设您询问的是使用对话框而不是对话框本身的测试组件,在您的测试用例中,添加

    providers: [
         { provide: MAT_DIALOG_DATA, useValue: {} },
         { provide: MatDialogRef, useValue: {} }
     ]
    

    这应该提供必要的依赖关系。

    【讨论】:

    • 不需要mock这些provider,正确的方式如上角源码所示
    猜你喜欢
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2021-11-27
    • 2017-08-11
    • 2017-12-10
    • 2018-11-14
    相关资源
    最近更新 更多