小编Den*_*jas的帖子

测试失败动作 - 弹珠 - ngrx 效果

我在测试对我的效果的失败操作时遇到问题。

在这里给出一些上下文,当调用Load操作时会执行 loadProducts 效果。在效果内部执行 HTTP 请求,如果此请求成功执行,则调用LoadSuccess操作,否则调用 LoadFail。代码如下

  @Effect()
  loadProducts$ = this.actions$.pipe(
    ofType(productActions.ProductActionTypes.Load),
    mergeMap((action: productActions.Load) =>
      this.productService.getProducts().pipe(
        map((products: Product[]) => (new productActions.LoadSuccess(products))),
        catchError(error => of(new productActions.LoadFail(error)))
      ))
  );
Run Code Online (Sandbox Code Playgroud)

为了测试这种效果,我使用了与 jasmine-marbles 几乎相同的 jest-marbles,无论如何,我将 Load 操作创建为热可观察对象,将 http 响应创建为冷和默认的预期结果。

it('should return a LoadFail action, with an error, on failure', () => {
  const action = new Load();
  const errorMessage = 'Load products fail';
  const outcome = new LoadFail(errorMessage);

  actions$ = hot('-a', { a: action});

  const response = cold('-#|', …
Run Code Online (Sandbox Code Playgroud)

rxjs marble ngrx angular

6
推荐指数
2
解决办法
1180
查看次数

标签 统计

angular ×1

marble ×1

ngrx ×1

rxjs ×1