Тестирование магазина ngrx: нет провайдера для MockStore - PullRequest
0 голосов
/ 08 апреля 2020

Я следую Официальной документации для тестирования магазинов ngrx: https://ngrx.io/guide/store/testing

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

NullInjectorError: R3InjectorError(CompilerModule)[MockStore -> MockStore]: 
      NullInjectorError: No provider for MockStore!
    error properties: Object({ ngTempTokenPath: null, ngTokenPath: [ 'MockStore', 'MockStore' ] })

Мой код выглядит так:

import { TestBed } from '@angular/core/testing';
import { provideMockStore, MockStore } from '@ngrx/store/testing';

describe('Auth Guard', () => {
  // @ts-ignore
  let store: MockStore;

  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [
        // any modules needed
      ],
      providers: [
        provideMockStore(),
        // other providers
      ],
    });

    store = TestBed.inject(MockStore);
  });

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

Я работаю @ ngrx / store@8.6.0

1 Ответ

1 голос
/ 08 апреля 2020

ОБНОВЛЕНО

на основе обсуждения store = TestBed.inject(Store); вместо MockStore достаточно для желаемого поведения.

ОРИГИНАЛ

Слишком рано,

получить его в тесте:

  it('should create', inject([Store], (store) => {
    expect(store).toBeTruthy();
  }));

не уверен, но вы можете попробовать позвонить compileComponents.

  beforeEach(async () => {
    await TestBed.configureTestingModule({
      imports: [
        // any modules needed
      ],
      providers: [
        provideMockStore(),
        // other providers
      ],
    }).compileComponents();

    store = TestBed.inject(MockStore);
  });
...