我正在学习使用Jest为ngrx8应用程序编写单元测试。
我正在测试一个已订阅ngOnInit中的选择器的组件:
ngOnInit(): void {
this.store.pipe(select(someSelector(this.parameter))).subscribe((res:
// some logic here
});
}
在.spec.ts文件中,我将provideMockStore
设置为TestBed配置:
TestBed.configureTestingModule({
// ...
providers: [
provideMockStore({
initialState,// defined somewhere above
selectors: [
{
selector: someSelector('param'),value: {a: 'b',c: 'd'}
}
]
})
]
// ...
}).compileComponents();;
因此,我希望在运行此单元测试时,我应该在组件.ts文件中输入预订(“此处有一些逻辑”部分),并且res
将等于{a: 'b',c: 'd'}
。
这不会发生,而是模拟的选择器将被忽略,而使用真正的选择器。
我尝试过的事情:
-
store.overrideSelector(someSelector('param'),{a: 'b',c: 'd')
-
将
fixture.detectChanges()
,await fixture.whenStable()
放在不同的位置
现在我没有选择了,NGRX documentation几乎没有涵盖任何内容。