#angular #jasmine #karma-jasmine
#angular #жасмин #карма-жасмин
Вопрос:
У меня следующая ошибка при запуске модульных тестов
NullInjectorError: R3InjectorError(DynamicTestModule)[StoreFeatureModule - > StoreRootModule - > StoreRootModule]:
NullInjectorError: No provider
for StoreRootModule!
error properties: Object({
ngTempTokenPath: null,
ngTokenPath: ['StoreFeatureModule', 'StoreRootModule', 'StoreRootModule']
})
NullInjectorError: R3InjectorError(DynamicTestModule)[StoreFeatureModule - > StoreRootModule - > StoreRootModule]:
NullInjectorError: No provider
for StoreRootModule!
ниже приведен код:
import {
ComponentFixture,
TestBed,
fakeAsync,
tick,
} from '@angular/core/testing';
import {
MenuComponent
} from './menu.component';
import {
RouterTestingModule
} from '@angular/router/testing';
import {
HttpClientTestingModule
} from '@angular/common/http/testing';
import {
UnitTestingModule
} from 'src/app/shared/unit-testing/unit-testing.module';
import {
Location
} from '@angular/common';
import {
MockStore
} from '@ngrx/store/testing';
import {
AppState
} from 'src/app/state';
import {
provideMockStore
} from '@ngrx/store/testing';
import {
CUSTOM_ELEMENTS_SCHEMA
} from '@angular/core';
describe('MenuComponent', (): void => {
let component: MenuComponent;
let fixture: ComponentFixture < MenuComponent > ;
let location: Location;
let store: MockStore < AppState > ;
beforeEach(async(): Promise < void > => {
await TestBed.configureTestingModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA],
imports: [RouterTestingModule, HttpClientTestingModule, UnitTestingModule],
declarations: [MenuComponent],
providers: [provideMockStore({})],
})
.compileComponents();
location = TestBed.get(Location);
store = TestBed.inject(MockStore);
});
beforeEach((): void => {
fixture = TestBed.createComponent(MenuComponent);
component = fixture.componentInstance;
fixture.detectChanges();
spyOn(store, 'dispatch').and.callFake(() => {});
});
it('should create', (): void => {
expect(component).toBeTruthy();
});
});
Не уверен, почему возникает эта ошибка, перепробовал все возможные способы и не нашел много решений для storeRooTmodule.
добавлены provideMockStore и mockstore, которые по-прежнему выдают ошибку
Поскольку я новичок в тестовых примерах, мне трудно понять эту конкретную ошибку.
Комментарии:
1. Можете ли вы показать нам
UnitTestingModule
? И я думаюprovideMockStore
, что нужен объект с ключомinitialState
, и он не может быть пустым. ngrx.io/api/store/testing/provideMockStore
Ответ №1:
Попробуйте добавить в свой:
поставщики:
providers: [
MockProvider(Store)
]
импортирует:
imports: [
StoreModule.forRoot({})
]