Я перехожу по ссылке ниже, чтобы проверить пользовательский диалог.http://angular -tips.com / blog / 2018/02 / testing-angular-material-dialog-templates / В своем шаблоне диалога я использовал еще один пользовательский компонент DialogFileImportComponent, как показано ниже:
<div class="header-row">
<span class="dialog-title">Edit File</span>
<mat-icon class="cursor-pointer clear" (click)="close()">clear</mat-icon>
</div>
<file-form (fileSubmit)="processImport($event)" (fileString)="validateFile($event)"
[isFromEdit]="true" [feedID]="data.fileFeedId" [feedDescription]="data.fileFeedName" [comments]="data.comments"
[tempUrl]="data.tempUrl" [descList]="data.descList" [fileName]="data.fileName" [fileSubmitionStatus]="data.fileSubmissionStatus"
[fileUploadError]="data.fileUploadError" ></file-form>
Я сделал все, что они упомянули и как показано ниже.Кроме того, я добавил ImportFileFormModule 'в разделе импорта
@Component({
template: ''
})
class NoopComponent { }
const TEST_DIRECTIVES = [
DialogFileImportComponent,
NoopComponent
];
@NgModule({
imports: [MatIconModule, MatDialogModule, NoopAnimationsModule,ImportFileFormModule],
exports: TEST_DIRECTIVES,
declarations: TEST_DIRECTIVES,
entryComponents: [
DialogFileImportComponent
],
})
class DialogTestModule { }
и создал тестовый стенд, как показано ниже
beforeEach(() => {
TestBed.configureTestingModule({
imports: [DialogTestModule,ImportFileFormModule],
schemas: [NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA],
providers: [
{
provide: OverlayContainer, useFactory: () => {
overlayContainerElement = document.createElement('div');
return { getContainerElement: () => overlayContainerElement };
}
}
]
});
dialog = TestBed.get(MatDialog);
fixture = TestBed.createComponent(NoopComponent);
});
, и добавил набор тестов, как показано ниже
it('shows information with alert details', () => {
const config = {
data: {
type: 'alert',
flag: 'saveasset',
title: 'Confirmation',
content: `Optional information has not been entered for
assets. Do you wish to wish to continue without entering these information ?`,
buttonBlock: {
saveButtonText: 'Ok',
closeButtonText: 'Cancel'
},
tempUrl: 'sample',
descList: ['aaa','bbbb'],
fileName: null,
fileSubmissionStatus: null,
fileUploadError: null,
fileFeedId:'',
comments:'asasas'
}
};
dialog.open(DialogFileImportComponent, config);
fixture.detectChanges(); // Updates the dialog in the overlay
const h2 = overlayContainerElement.querySelector('#mat-dialog-title-0');
const button = overlayContainerElement.querySelector('button');
expect(h2.textContent).toBe('Confirmation');
expect(button.textContent).toBe('Ok');
});
во время выполнения тестового примера я получаю сообщение об ошибке: Ошибка типа: Не удается прочитать свойство 'textContent' из null