SpyOn SideNav не находит данный метод - PullRequest
0 голосов
/ 27 марта 2020

У меня есть боковое навигационное меню в моем тестовом проекте, и я хочу написать простой тест, чтобы проверить, открывается ли sidenav ( переключает ), когда я нажимаю кнопку. Сам AppComponent ссылается на боковую панель через свою sidenavbar зависимостей.

it('when button is clicked, sidenav appears', async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    const component = fixture.componentInstance;
    let sidenav_button = fixture.debugElement.nativeElement.querySelector('button');
    fixture.detectChanges();
    expect(component.sidenavbar.opened).toBeFalsy();
    spyOn(component.sidenavbar, 'toggle');
    sidenav_button.click();
    fixture.whenStable().then(() => {
      fixture.detectChanges();
      expect(component.sidenavbar.toggle).toHaveBeenCalled();
  });

прямо сейчас говорится, что метод toggle () не существует, чтобы шпионить за ним. Я уверен, что это действительно так.

1 Ответ

1 голос
/ 27 марта 2020

Возможно, toggle является личным, и вы не можете шпионить за ним.

sidenavbar - это object в AppComponent, верно? Это не дочерний компонент?

На вашем месте я бы просто увидел, как изменилось свойство opened.

it('when button is clicked, sidenav appears', async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    const component = fixture.componentInstance;
    let sidenav_button = fixture.debugElement.nativeElement.querySelector('button');
    fixture.detectChanges();
    expect(component.sidenavbar.opened).toBeFalsy();
    // spyOn(component.sidenavbar, 'toggle');
    sidenav_button.click();
    fixture.whenStable().then(() => {
      fixture.detectChanges();
      expect(component.sidenavbar.opened).toBeTruthy();
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...