Я учусь писать модульные тесты для приложения ngrx8, используя Jest.
Я тестирую компонент, имеющий подписку на селектор в 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 почти ничего не охватывает.