设置:
我的父状态定义为
@State<ParentStateModel>({
name: 'grid',
defaults: {
parentData: 'some data'
},
children: [LoadingState]
})
export class ParentState {
@Action(Action1)
action1(ctx: stateContext<ParentStateModel>, action: Action1) {
// In production this state will be ParentStateModel as expected
// but in unit test, it will be of type LoadingState
const state = ctx.getState();
}
}
子状态定义为
@State<LoadingStateModel>({
name: 'gridLoading',
defaults: {
loading: false
}
})
export class LoadingState{
@Action(Action1)
action1(ctx: stateContext<LoadingStateModel>, action: Action1) {
ctx.setState({loading: true});
}
}
请注意,两个国家都对Action1
做出了响应。
在生产环境中运行它时,它应能正常工作。加载状态负责处理LoadingStateModel,而ParentState负责处理ParentStateModel。
但是在对代码进行单元测试时,ParentState中的操作处理程序将被提供给LoadingStateModel而不是ParentStateModel(请参见代码中的注释)。
我的单元测试设置如下
TestBed.configureTestingModule({
imports: [NgxsModule.forRoot([CashflowState, LoadingState])]
});
如果我未在imports数组中包含LoadingState,则NGXS失败,并显示Child state not found: function LoadingState()
我是在做错什么,还是NGXS中的错误?