Как вы заставляете закрывать диалоговое окно в тесте Angular? - PullRequest
0 голосов
/ 18 декабря 2018

Сценарий:

  • У меня есть компонент, который является оберткой вокруг другого компонента, и компонент обертки вызывает this.dialog.open(otherComponent).
  • В тесте «он создает» для компонента-оболочки диалоговое окно открывается в браузере тестов и остается там в течение всего периода тестирования, скрывая все под ним и даже результаты теста.
    • Как заставить его закрыться?
    • Я пытался dialog.close(), dialog.closeAll(), Я пытался создать фиктивное диалоговое окно и закрыть его, но, похоже, ничего не работает, потому что исходный тестируемый компонент не закрывает это диалоговое окно.

Как мне решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 08 января 2019
 {provide: MatDialog, useValue: {}}

Я издевался над MatDialogRef таким образом, но не над MatDialog.Спасибо @trichetriche за указание на это.

0 голосов
/ 18 декабря 2018

Вот функция, которую я создал, чтобы создать новый макет службы диалога, если хотите:

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

Вызвав

const mock = matDialogMock();

Вы создаете новый экземпляр макетаи может ввести его в ваши тесты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...