Ошибка: при использовании жасмина и мрамора с Spectator в тесте Angular инициализировать не планировщик испытаний - PullRequest
1 голос
/ 02 апреля 2020

Мой компонент подписывается на Observable в Сервисе, который заполняется с помощью селектора Ngrx, обобщенного здесь для краткости:

export class MyService {
  signInFalied$: Observable<boolean>;

  constructor(
    private store: Store<MyAppState>,
  ) {
    this.signInFailed$ = this.store.select(mySelectors.signInFailed);
  }
}

Мой компонент имеет условное содержимое на основе этого значения состояния, и я хотел бы проверить, что отображается правильный контент. В своем тесте я предоставляю макет для службы следующим образом:

describe('My Test', () => {
  let spectator: SpectatorHost<MyComponent>;

  const createHost = createHostComponentFactory({
    component: MyComponent,
    declarations: [MyComponent],
    providers: [
      ...,
      mockProvider(MyService, {
        signInFailed$: cold('x', { x: null }),
        ...
      }),
    ],
    imports: [...]
  });
});

Когда я запускаю тесты, я получаю:

Ошибка: не инициализирован планировщик теста

В ходе поисков я попытался установить для моей цели компиляции значение ES5

В настоящее время я также использую последнюю версию jasmine-marbles: 0.6.0

Что я делаю не так?

1 Ответ

0 голосов
/ 02 апреля 2020

Думаю, я сталкивался с этой проблемой раньше. Я не уверен насчет angular-spectator, но для jasmine на первом beforeEach я звоню initTestScheduler и addMatchers.

Примерно так:

import { addMatchers, initTestScheduler } from 'jasmine-marbles';

describe('MyComponent', () => {
  beforeEach(async(() => {
    TestBed.configureTestingModule({ 
     ....
    }).compileComponents();

    initTestScheduler();
    addMatchers();
  }));
});
...