angular 9
Я реализовал mat-dialog со следующим angular примером материала
https://stackblitz.com/angular/jdvaxxxqoqo?file=src%2Fapp%2Fdialog-content-example.ts
openDialog() {
const dialogRef = this.dialog.open(DialogContentExampleDialog);
dialogRef.afterClosed().subscribe(result => {
console.log(`Dialog result: ${result}`);
});
}
it работал хорошо, но я не мог понять, как протестировать функцию openDialog
.
То, что я должен проверить, может быть, вызывается dialog.open, поэтому я попробовал
(2020 / 07/10 отредактируйте spe c .ts)
describe('DialogContentExample', () => {
let component: DialogContentExample;
let fixture: ComponentFixture<DialogContentExample>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [DialogContentExample],
providers: [
{
provide: MatDialog,
useValue: {}
},
]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(DialogContentExample);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should dialog open called',() => {
// create a spy to check if dialog open is called or not
const spyObject = spyOn(Component.dialog,'open').and.callThrough();
// call that function
component.openDialog();
expect(spyObject).toHaveBeenCalled();
})
});
но тест сказал
Error: <spyOn> : open() method does not exist
Usage: spyOn(<object>, <methodName>)
, почему он сказал эту ошибку, даже если на самом деле скрипт вызывает this.dialog.open()
. А как это проверить?
Спасибо за вашу добрую помощь