Подписка Ngrx не запускается в модульном тесте - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь написать модульный тест, чтобы проверить, что делается в рамках подписки на ломтик магазина. Когда я пытаюсь вручную, подписка запускается, но не в модульном тесте.

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();

но это мне кажется очень неуклюжим. Есть ли лучший способ убедиться, что подписки работают?

большое спасибо за любую помощь

...