не удалось найти объект для шпионажа для navigateBackToLanding - PullRequest
0 голосов
/ 28 декабря 2018

Во время моего теста я получаю эту ошибку could not find an object to spy upon for navigateBackToLanding.

Я выполнил поиск и выполнил все шаги, которые были упомянуты, но все равно получаю ошибку

 could not find an object to spy upon for navigateBackToLanding

Не уверен, что мне здесь не хватает.

component.ts

  ngOnInit () {
    this.bwcPageTemplateCommunicatorService.subheader.next({
      title: this.title,
      backAction: {
        label: 'back',
        callback: () => this.navigateBackToLanding()
      }
    });
  }

  public navigateBackToLanding () {
    this.router.navigate(['portal']);
  }

spec.ts компонента

describe('CpDetailPageComponent', () => {
  let component: CpDetailPageComponent;
  let fixture: ComponentFixture<CpDetailPageComponent>;
  let onClickMock;
  beforeEach(async(() => {
    TestBed.configureTestingModule({
      schemas: [CUSTOM_ELEMENTS_SCHEMA],
      imports: [RouterTestingModule],
      declarations: [CpDetailPageComponent],
      providers: [
        BwcPageTemplateCommunicatorService,
        BwcTocService,
        BwcScrollSpyService,
        BwcScrollService
      ]
    });
    TestBed.compileComponents();
    fixture = TestBed.createComponent(CpDetailPageComponent);
    onClickMock = spyOn(component, 'navigateBackToLanding').and.callThrough();
  }));

  it('should call navigateBackToLanding method', () => {
    fixture.debugElement.query(By.css('button')).triggerEventHandler('click', null);
    expect(onClickMock).toHaveBeenCalled();
  });

});

HTML

<button class="bwc-subheader__button-back ng-star-inserted" mat-icon-button="" type="button" aria-label="back"></button>

1 Ответ

0 голосов
/ 28 декабря 2018

Ну, это довольно просто: вы никогда нигде не инициализируете переменную component.Так что, как говорится в сообщении об ошибке, нет объекта для шпионажа, поскольку component не определено.

component = fixture.componentInstance;
onClickMock = spyOn(component, 'navigateBackToLanding').and.callThrough();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...