Сценарий:
this.dialog.open(otherComponent)
.dialog.close(),
dialog.closeAll(),
Я попытался создать фиктивный диалог и закрыть
это, но, похоже, ничего не работает, потому что исходный компонент под
тестирование не закрывает этот диалог.Как я могу это решить?
Как я уже сказал, я пробовал издеваться над этим. Попробую esc.
Вы пробовали, но у вас все еще появляется диалоговое окно в ваших тестах. Так что не пытайтесь, получится!
Хорошо, я буду продолжать попытки! :)
Вы были правы, я издевался над MatDialogRef, а не над MatDialog!
Вот функция, которую я создал для создания нового макета диалоговой службы, если вы хотите:
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 за указание на это.
Вы должны издеваться над этим, вы не должны полагаться на библиотеку при модульном тестировании своих компонентов. При тестировании интерфейса просто имитируйте щелчок на заднем фоне, кнопку закрытия или нажатие клавиши Esc.