Как проверить эффект, у которого есть время отката? - PullRequest
0 голосов
/ 30 октября 2018

Я использую 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);          
   }));
});

1 Ответ

0 голосов
/ 30 октября 2018

Пример в приложении ngrx есть пример этого, см. Код здесь :

it('should return a new book.SearchComplete, with the books, on success, after the de-bounce', () => {
  const book1 = { id: '111', volumeInfo: {} } as Book;
  const book2 = { id: '222', volumeInfo: {} } as Book;
  const books = [book1, book2];
  const action = new FindBookPageActions.SearchBooks('query');
  const completion = new BooksApiActions.SearchSuccess(books);

  actions$ = hot('-a---', { a: action });
  const response = cold('-a|', { a: books });
  const expected = cold('-----b', { b: completion });
  googleBooksService.searchBooks = jest.fn(() => response);

  expect(
    effects.search$({
      debounce: 30,
      scheduler: getTestScheduler(),
    })
  ).toBeObservable(expected);
});

Дополнительную информацию можно найти в документах по тестированию ngrx / эффектов .

...