Я использую NgRx и хочу проверить свои эффекты. Некоторые эффекты имеют время отката. Как этот пример:
@Effect() searchImage$ = this.actions$.pipe(
ofType(fromImageLibraryActions.SEARCH_IMAGES),
map((action: fromImageLibraryActions.SearchImages) => action.query),
debounceTime(300),
switchMap(query: string) => this.imageLibraryService.getImagesBySearching(query)),
map((images: LibraryImage[]) => new fromImageLibraryActions.LoadImages(images)));
Как правильно их проверить. Я попробовал следующее:
describe('SearchImages$', () => {
it('should return loadImages action', fakeAsync(() => {
const action = new fromImageLibraryActions.SearchImages('test');
const images = [
{ uploaderId: 1 } as LibraryImage,
{ uploaderId: 2 } as LibraryImage
];
const loadImagesAction = new fromImageLibraryActions.LoadImages(images);
actions$ = hot('--a-', { a: action });
tick(300);
getTestScheduler().flush();
const expected = cold('--b-', { b: loadImagesAction });
expect(effects.searchImage$).toBeObservable(expected);
}));
});