spyOn (Observable, 'fromEvent') выдает ошибку после обновления до rx js 6.5 - PullRequest
0 голосов
/ 16 июня 2020
getInactiveTimerTabSynchronizer() {
    return fromEvent(window, 'storage').pipe(
      filter((x: StorageEvent) => {
        return x.key === this.inactivityTabSynchronizerStorageKey;
      }),
      debounceTime(350));
  }

В приведенном выше коде есть пример модульного теста, как показано ниже:

import { Observable, of as observableOf } from 'rxjs';


it(
    'getInactiveTimerTabSynchronizer() function should return an observable that looks for storage events ' +
      'and filters it to only "INACTIVE_TIMER_RESET" keyed events',
    fakeAsync(
      inject([AuthService], (service: AuthService) => {
        spyOn(Observable, 'fromEvent').and.returnValue(
          observableOf({ key: 'INACTIVE_TIMER_RESET' } as StorageEvent, { key: 'SOME_OTHER_KEY' } as StorageEvent)
        );

        let counter = 0;
        service.getInactiveTimerTabSynchronizer().subscribe(x => {
          counter++;
          expect(counter).toBe(1);
        });
        tick(350);
        tick(350);
      })
    )
  );

Он работал нормально, когда у меня были angluar 6 и rx js 5.5, но после того, как я обновился до angular 7 и rx js 6.5 он выдает ошибку как:

Argument of type '"fromEvent"' is not assignable to parameter of type '"prototype" | "create" | "if" | "throw"'

Любая помощь для исправления или обходного пути?

1 Ответ

0 голосов
/ 16 июня 2020

это должно быть spyOn (rx js, 'fromEvent') now

 import * as rxjs from 'rxjs'
 ...
 spyOn(rxjs, 'fromEvent').and.returnValue(
      observableOf({ key: 'INACTIVE_TIMER_RESET' } as StorageEvent, { key: 'SOME_OTHER_KEY' } as StorageEvent)
    );

, потому что старый способ использования fromEvent был

Rx.Observable.fromEvent(input, 'keyup')
...