Angular материал: Как проверить, вызывается ли dialog.open () - PullRequest
0 голосов
/ 09 июля 2020

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(). А как это проверить?

Спасибо за вашу добрую помощь

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