Спецификация Ngrx Effects выдает ошибку как «Нет инициализированного планировщика теста» - PullRequest
2 голосов
/ 18 марта 2019

Попытка запустить простой тест эффектов с существующим и недавно перенесенным проектом Angular 7.Но я получаю ошибку, как показано ниже.

Ошибка: нет инициализатора планировщика теста в getTestScheduler (node_modules / jasmine-marbles / es6 / src / scheduler.js: 11: 1) в новом TestHotObservable (node_modules / jasmine-marbles / es6 / src / test-observables.js: 21: 39) в Module.hot (node_modules / jasmine-marbles / es6 / index.js: 7: 1)

Мой код вФайл спецэффектов - базовая стандартная проверка с jasmine-marbles.

const action = new Load(request);
const completion = new LoadSuccess(result);

actions$ = hot('-a-', { a: action});
const response = cold('-a|', {a: result});
const expected = cold('--b', {b: completion});
service.getSomething.and.returnValue(result);
expect(effects.load$).toBeObservable(expected);

Кто-нибудь видел и исправлял эту ошибку раньше?

Ответы [ 3 ]

7 голосов
/ 21 марта 2019

Хотя переход на ES5 устранил проблему, мой коллега нашел лучшее решение. Решение - добавить следующие строки в файл src / test.ts. Мне он больше нравится, так как позволяет продолжить тестирование в ES6.

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

// configure matchers for jasmine-marbles
jasmine.getEnv().beforeAll(() => {
  return addMatchers();
});
jasmine.getEnv().beforeEach(() => {
 initTestScheduler();
});
jasmine.getEnv().afterEach(() => {
 getTestScheduler().flush();
 resetTestScheduler();
});
3 голосов
/ 19 июня 2019

Обновление Jasmine-Marbles до 0.6.0 решило эту проблему для меня.

0 голосов
/ 18 марта 2019

После дальнейших исследований выяснилось, что это связано с опциями компилятора в tsconfig.spec.json.Первоначально он был настроен как «target»: «es6», его изменение на es5 устранило эту проблему, и спецификации теперь успешно работают.

...