модульные тесты angular 5 не работают, если используется rxjs switchmap - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь протестировать компонент, для которого в хранилище отправляется действие, а затем возвращаются некоторые данные из этой карты переключателей

эта проблема связана с модульным тестированием этого компонента. если я удаляю switchmap, код работает нормально, иначе он не работает с

undefined is not a constructor

вот мой файл спецификаций

    it('should dispatch xyz action oninit', async(() => {
    mockStore.select.and.returnValue(MockService.xyz);

    component.ngOnInit();
    expect(mockStore.select).toHaveBeenCalledTimes(1);
    expect(mockStore.select).toHaveBeenCalledWith(fromStore.xyz);
    expect(component.data$).toEqual(Observable.of(MockService.xyz));
}));

вот метод компонента oninit

ngOnInit(): void {
    this.data$ = this.store.select(fromStore.xyz)
        .switchMap((val) => { return Observable.of{zyz};}
}

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

undefined is not a constructor (evaluating 'this.store.select(fromStore.zyz)
                .switchMap')

Я использую фантомы и жасмин для запуска своих спецификаций

1 Ответ

0 голосов
/ 17 октября 2018

Проблема заключалась в том, что в моем файле component.ts не был импортирован оператор карты. Во время модульного тестирования этот оператор не может быть решен

import { map } from 'rxjs/operators';
...