Мне нужна помощь в создании теста для fromevent, наблюдаемого в angular6

в моем коде есть функция, которая использует fromEvent, то есть Observable

getNavigatorStatus(): Observable<any> {
  return merge(
    fromEvent(window, 'offline').pipe(map(() => false)),
    fromEvent(window, 'online').pipe(map(() => true)),
    Observable.create(sub => {
      sub.next(navigator.onLine);
      sub.complete();
    })
  );
}

и пройдите этот тест:

it('getNavigatorStatus: should returns Observable', done => {
  spyOn(Observable, <any>'fromEvent').and.returnValue(of({}));
  spyOn(Observable, 'create').and.returnValue(of({}));

  NetworkService.getNavigatorStatus().subscribe(() => {
    expect(fromEvent).toHaveBeenCalledWith(window, 'offline');
    expect(fromEvent).toHaveBeenCalledWith(window, 'online');
    expect(Observable.create).toHaveBeenCalled();
    done();
  });
});

Моя проблема в том, что после перехода на angular 6 я больше не могу spyOn fromEvent в Observable, как я делал до angular 6.

spyOn(Observable, <any>'fromEvent').and.returnValue(of({}));

Мне нужна помощь, чтобы проверить вызов fromEvent (параметры, результат и т. д.) Внутри моей функции getNavigatorStatus.

1
0
493
1

Ответы 1

Вы могли сделать это:

import * as rxjs from 'rxjs';
...
spyOnProperty(rxjs, 'fromEvent').and.returnValue(() => rxjs.of({}));

Удачного кодирования!

Другие вопросы по теме