簡體   English   中英

您如何在Angular測試中強制關閉墊對話框?

[英]How do you force a mat-dialog to close in an Angular test?

場景:

  • 我有一個組件,該組件是另一個組件的包裝器,包裝器組件調用this.dialog.open(otherComponent)
  • 在“為包裝器組件創建”測試中,該對話框在測試瀏覽器中彈出,並在測試套件的整個過程中保持在那里,從而掩蓋了其下的所有內容甚至測試結果。
    • 如何強制關閉?
    • 我嘗試了dialog.close(), dialog.closeAll(),嘗試創建一個模擬對話框並關閉該對話框,但似乎沒有任何效果,因為受測試的原始組件不會關閉該對話框。

我該如何解決?

如果需要,這是我創建的用於創建對話框服務的新模擬的函數:

matDialogMock(): SpyObj<MatDialog> {
    return createSpyObj<MatDialog>('MatDialog', {
      open: {
        afterOpened: () => of(undefined),
        afterClosed: () => of(undefined),
      } as any
    });
  }

通過致電

const mock = matDialogMock();

您可以創建該模擬的新實例,並將其注入測試中。

 {provide: MatDialog, useValue: {}}

我以這種方式嘲笑了MatDialogRef,但沒有嘲笑MatDialog。 感謝@trichetriche指出這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM