Тестирование магазина Angular 6 ngrx: невозможно прочитать идентификаторы неопределенных - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь протестировать компонент, который внедрил Store.Тест не проходит и выдает мне следующую ошибку: «Не удается прочитать свойства« идентификаторы »из неопределенного» * ​​1001 *

Тест:

 const initialState = {
    quoteInfo: {
        quoteLoaded: true,
        ids: [0],
        entities: {
            '0': {
                id: 0,
                quoteId: 'string',
                quoteStatus: 0,
                reference: 'ref01',
            }
        }
    },
    quoteSettings: {
        quoteSettingsReceived: true,
        ids: [1],
        entities: {
          '1': {
            id: 1,
            status: 0,
            customer: 'string',
            customerId: 'cus01',
            carrier: 'car01',
            contact: 'contact01',
            contactId: 'c01',
            priceCategory: 'vip',
            priceCategoryId: 'pr1',
            creationDate: null,
            expirationDate: null,
            deliveryDate: null,
            currency: null,
            currencyId: null,
            paymentDescription: 'pay desc',
            tax: 0,
            comments: 'comments',
            shippingAddress: null,
            billingAddress: null
          }
        }
    }
  };

Тест до того:

  beforeEach( async(() => {
    TestBed.configureTestingModule({
      declarations: [GeneralComponent],
      imports: [
        BrowserAnimationsModule,
        HttpClientModule,
        StoreModule.forRoot({ feature: combineReducers({quoteSettings: settingsReducer, quoteInfo: infoReducer }, initialState)}),
      ],
      providers: [
      ]
    }).compileComponents();
  }));

При инициализации компонента появляется ошибка, код которой следующий:

 ngOnInit() {
    this.randomObservable$ = this._store.pipe(select(randomSelector));
  }

Случайный селектор

export const randomFeatureSelector= createFeatureSelector<RandomState>('random');
export const randomSelector = createSelector(
  randomFeatureSelector, // this is null
  fromRandomReducer.selectAll
);

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Проблема была в файле html, где я использовал наблюдаемое из селектора напрямую, и если хранилище все еще не инициализировано, оно выдает эту ошибку

0 голосов
/ 28 ноября 2018

Для насмешливого Магазина я обычно использую BehaviorSubject из rx.js:

let mockStore;
beforeEach( async(() => {
 mockStore = new BehaviorSubject(initialState);
 TestBed.configureTestingModule({
  declarations: [GeneralComponent],
  imports: [
    BrowserAnimationsModule,
    HttpClientModule
  ],
  providers: [
  {provide: Store, useValue: mockStore}
  ]
}).compileComponents();

}));

...

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