使用 debounceTime 进行单元测试效果

时间:2021-06-22 07:05:05

标签: angular ngrx

如何重写此测试以测试去抖动时间。这是用于搜索框,它将在 500 毫秒后允许 api 调用。如何为这种效果编写测试用例。

效果.ts

 searchBooks$ = createEffect(() =>
    this.actions$.pipe(
      ofType(BooksActions.searchBooks),
      switchMap((action) =>
        this.http.get<Book[]>(`/api/books/search?q=${action.term}`).pipe(
          debounceTime(500),
          map((data) => BooksActions.searchBooksSuccess({ books: data })),
          catchError((error) => of(BooksActions.searchBooksFailure({ error })))
        )
      )
    )
  );

我正在编写此测试,但不知道如何测试去抖动时间,请帮忙 effects.specs.ts

describe('loadBooks$', () => {
    it('should work', done => {
      actions = new ReplaySubject();
      actions.next(BooksActions.searchBooks({ term: '' }));

      effects.searchBooks$.subscribe(action => {
        expect(action).toEqual(
          BooksActions.searchBooksSuccess({ books: [createBook('A')] })
        );
        done();
      });

      httpMock.expectOne('/api/books/search?q=').flush([createBook('A')]);
    });
  });
});

0 个答案:

没有答案