Я пытаюсь написать модульный тест, чтобы проверить, что делается в рамках подписки на ломтик магазина. Когда я пытаюсь вручную, подписка запускается, но не в модульном тесте.
ngOnInit():void {
this.currentPage$ = this.store.pipe(select('recipes'));
this.activatedRoute.params.pipe(
filter(params => 'pageId' in params),
map(params => params.pageId),
distinctUntilChanged(),
takeUntil(this.unsubscribe$)
).subscribe(pageId => {
this.store.dispatch(new LoadPage(pageId, 5));
});
this.store.select(getAllRecipes).pipe(skip(1)).subscribe((recipes) => {
if (recipes !== null) {
this.recipes = recipes['recipes'];
this.currentPage = Number(recipes['currentPage']);
this.totalPages = Number(recipes['totalPages']);
};
});
}
тест:
fit('should load all recipes of the page indicated by the value of the url param pageId', fakeAsync(() => {
let getRecipesSpy = spyOn(RecipeService.prototype, 'getRecipes').and.returnValue([{id: 2, title: 'trololo', description: 'htotoa'}]);
mockActivatedRoute.testParams = {pageId: '3'};
//await component.store.select(getAllRecipes).subscribe();
//tick();
fixture.detectChanges();
expect(getRecipesSpy).toHaveBeenCalledWith(3);
expect(component.recipes).toEqual([{id: 2, title: 'kjhkh', description: 'hahahoho'}]);
}));
В другом месте в моем коде я работал с:
await component.currentPage$.subscribe();
но это мне кажется очень неуклюжим. Есть ли лучший способ убедиться, что подписки работают?
большое спасибо за любую помощь