这是组件测试的导入
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule,
StoreModule.forRoot({companies: combineReducers(fromStore.reducers), ...fromRootStore.reducers}),
EffectsModule.forRoot([CompanyEffects, CollectionEffects]),
StoreRouterConnectingModule
],
providers: [
CompanyService,
...fromCompanyGuards.guards,
{provide: RouterStateSerializer, useClass: CustomSerializer}
],
declarations: [ CompanySummaryComponent, CompanyHeaderComponent ]
})
.compileComponents();
}));
我的测试
it('should create', () => {
expect(component).toBeTruthy();
});
我的组件:
constructor(
private store: Store,
private rootStore: Store
) {
this.actionsSubscription = this.store.select(fromRootStore.getRouterState)
.pipe(map((routerState: fromRouter.RouterReducerState) =>
new company.Select(routerState.state.params.companyId)))
.subscribe(store);
}
根存储状态:
export interface State {
routerReducer: fromRouter.RouterReducerState;
user: fromUserReducer.UserState;
}
根减速器:
export const reducers: ActionReducerMap = {
routerReducer: fromRouter.routerReducer,
user: fromUserReducer.reducer
};
路由器减速器的选择器:
export const getRouterState = createFeatureSelector('routerReducer');
**此选择器在组件测试中返回未定义,但在应用程序中工作正常。**
我尝试了在测试中导入 store 模块的不同组合
1) StoreModule.forRoot({companies: combineReducers(fromStore.reducers), ...fromRootStore.reducers}),
2) StoreModule.forRoot(combineReducers({companies: combineReducers(fromStore.reducers), ...fromRootStore.reducers})),
3) 1) StoreModule.forRoot(...companies: combineReducers(fromStore.reducers), ...fromRootStore.reducers),
注意:即使只从根存储区访问用户,我也感到厌烦,它也无法正常工作。 我正在使用 ngrx 4.1.1 版本。