#angular #angular-material #karma-jasmine #angular-ui #angular-unit-test
Вопрос:
У нас есть кнопка в пользовательском интерфейсе, при нажатии на которую он внутренне вызывает метод, который вызывает службу для выполнения какой-либо операции, а затем отображает сообщение о возврате с помощью диалогового окна mat. Модульный тест завершается неудачно, говорится, что «метод open() не существует». ошибка возникает в строке кода spyOn(component.dialog, 'open').and.callThrough();
после нажатия кнопки «Вызов» нажмите:
public dosomething(){ this.service .dosomething() .subscribe((result) =gt; { this.showConfirmDialog(result); this.isDisabled = true; }, error =gt; { this.showErrorDialog(); }); }
ниже приведен код showConfirmDialog()
private showConfirmDialog(result){ const dialogConfig = new MatDialogConfig(); dialogConfig.disableClose = true; dialogConfig.autoFocus = true; dialogConfig.data = { messageHeader: heading, answerDescription: result, isShownAnswerDescription: true, isHidden: true, } as MessageData; const dialogRef = this.dialog.open(MessageDialogComponent, dialogConfig); }
ниже приведен модульный тест:
it('should do something on click of button button', () =gt; { spyOn(TestBed.inject(ConfigurationManagementService), 'dosomething') .and.returnValue(of('message')); spyOn(component.dialog, 'open').and.callThrough(); component.isDisabled = false; component.dosomething(); expect(component.dialog.open).toHaveBeenCalledWith(MessageDialogComponent); });
Пожалуйста, дайте мне знать, если я что-то упущу…
Заранее спасибо!!!