Я использую angular 8. У меня есть модуль app
и подмодуль «feature». У обоих есть свои магазины. app.module.ts имеет
@NgModule({
imports: [
...
StoreModule.forRoot({ 'app': reducer }),
...
}]
Таким же образом, в модуле 'feature' есть
StoreModule.forFeature('feature', fromFeature.reducer)
Теперь, тестируя компонент уровня app
в jasmine, я издеваюсь над Магазином, как показано ниже.
let store: MockStore<State>;
TestBed.configureTestingModule({
imports: [
StoreModule.forRoot({'app' : reducer})
],
providers: [
provideMockStore({initialState})
]
где initialState
- начальное состояние модуля app
. Однако при попытке получить store = TestBed.get(Store);
я получаю ошибку для неопределенных значений для state
модуля feature
, когда он пытается получить доступ к селекторам из модуля feature
.
Я понимаю, что мне нужно инициализировать mockStore, указав состояние всего приложения, а не только app
состояние модуля. Однако я не знаю, как этого добиться.
Я попытался импортировать StoreModule.forFeature('feature', featureReducer)
и инициализировать mockstore как provideMockStore({initialState:: {initialState, featureInitialState}})
, но все равно получаю состояние функции undefined
для селекторов.
Ошибка выглядит следующим образом
ERROR TypeError: Cannot read property 'isEntity' of undefined
at getIsEntity (VM17 main.js:50252)
at store.js:583
at memoized (store.js:525)
at defaultStateFn (store.js:552)
at store.js:586
at memoized (store.js:525)
at MapSubscriber.project (store.js:480)
где getIsEntity
- это feature
селектор модуля, определяемый следующим образом:
const getIsEntity = (state: State): boolean => state.isEntity
Как я могу имитировать / передать начальное состояние для функционального модуля в родительском модуле приложения?