ngrx / store - тестирование, бросок TypeError: Невозможно прочитать свойство 'pipe' из неопределенного - PullRequest
0 голосов
/ 30 сентября 2019

Вот мой файл ts:

this.store.pipe(select(subscribe.getRegCategories)).pipe(takeUntil(this.ngUnsubscribe)).subscribe(data => {
            if (data && data.length) {
                this.allRegCategories = data;
            }
        });

, когда я иду на тестирование, получая ошибку как:

this.store.pipe(select(subscribe.getRegCategories)).pipe(takeUntil(this.ngUnsubscribe)).subscribe(data => {

TypeError: Cannot read property 'pipe' of undefined

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

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

import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { Store, select } from '@ngrx/store';
import { RouterTestingModule } from '@angular/router/testing';
import { HttpClientModule } from '@angular/common/http';
import { ShellViewProgMgmtComponent } from './shell-view-prog-mgmt.component';
import { ViewProgMgmtComponent } from './../../components/view-prog-mgmt/view-prog-mgmt.component';
import * as actions from './../../state/actions/setup-config.actions';

describe('ShellViewProgMgmtComponent', () => {
    let component: ShellViewProgMgmtComponent;
    let fixture: ComponentFixture<ShellViewProgMgmtComponent>;

    beforeEach(async(() => {
        TestBed.configureTestingModule({
            declarations: [ShellViewProgMgmtComponent, ViewProgMgmtComponent],
            imports: [HttpClientModule, RouterTestingModule],
            providers: [
            {
                provide: Store,
                useValue: {
                    dispatch: jest.fn(),
                    pipe: jest.fn()
                }
            }
            ]
        })
        .compileComponents();
    }));

    beforeEach(() => {
        fixture = TestBed.createComponent(ShellViewProgMgmtComponent);
        component = fixture.componentInstance;
        fixture.detectChanges();
    });

    it('should create', () => {
        expect(component).toBeTruthy();
    });

    describe('ngOnInit()', () => {

        it('should dispatch an event resetEditPage action in ngOnit lifecycle', () => {

            const store = TestBed.get(Store);
            const action = actions.resetEditPage();
            const spy = jest.spyOn(store, 'dispatch');

            fixture.detectChanges();
            expect(spy).toHaveBeenCalledWith(action);

        });

    });
});

1 Ответ

2 голосов
/ 30 сентября 2019

Пожалуйста, не издевайтесь над собственным магазином.

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

https://ngrx.io/guide/store/testing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...