Проверьте, была ли вызвана функция, Angular модульное тестирование - PullRequest
1 голос
/ 20 января 2020

Я вызвал функцию внутри ngOnInit,

ngOnInit() {
 this.isSubscribable();
}

Я хочу провести модульное тестирование для этого ngOnInit следующим образом:

    it('Check isSubscribable is called from ngOnInit', async(async() => {
      spyOn(component, 'isSubscribable').and.callThrough();
      fixture.detectChanges();
      await fixture.whenStable();
      expect(component.isSubscribable).toHaveBeenCalled();

    }))

Это не работает. Мне нужна помощь в этом.

Ответы [ 2 ]

2 голосов
/ 20 января 2020

Что если вы попробуете так?

it('Check isSubscribable is called from ngOnInit', () => {
  const spySubscribable = spyOn(component, 'isSubscribable');
  component.ngOnInit();
  expect(spySubscribable).toHaveBeenCalled();
});
1 голос
/ 20 января 2020
it('Check isSubscribable is called from ngOnInit', () => {
  const spy = spyOn(component, 'isSubscribable').and.callThrough();
  fixture.detectChanges();
  expect(spy).toHaveBeenCalled();
}))

Вам нужно вручную вызвать fixture.detectChanges(), если для вашего компонента changeDetection установлено значение ChangeDetectionStrategy.OnPush.

Вышеуказанное должно работать, если вы правильно создали экземпляр компонента до it утверждение включается, как:

let component: MyComponent;
let fixture: ComponentFixture<MyComponent>;
beforeEach(() => {
  fixture = TestBed.createComponent(MyComponent);
  component = fixture.componentInstance;
})

Если ваш код настолько прост, что у вас есть только этот вызов метода в ngOnInit(), то вам, возможно, не нужно использовать какие-либо async/await и .whenStable magi c.

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