测试触发新动作的效果

问题描述

我想测试一下这种效果

@Effect()
cardProductsRequest$ = this.actions$.pipe(
  ofType(OrderCardActions.getCardProducts),switchMap((_) => {
    return this.orderCardService.getCardProducts().pipe(
      map((cardProductsResponse) => {
        return OrderCardActions.getCardProductsResponse({
          cardProducts: cardProductsResponse.cardProducts,});
      }),catchError((error) => {
        return of(OrderCardActions.getCardProductsFailed({ error }));
      })
    );
  })
);

我的状态如下:

export interface OrderCardState {
  cardProducts: CardProduct[];
  cardArts: {
    [cardArtKey: string]: CardProductArtState;
  };
  loading: boolean;
  error: ErrorDetails;
  selectedCardProduct: CardProduct;
  selectedCreditMax: CreditMax;
}

这是迄今为止我对测试的最佳尝试:

it('should retrieve card products,and produce a GetCardProductsResponse action',() => {
  const action = OrderCardActions.getCardProducts();
  const cardProducts = [createCardProduct()];
  const outcome = OrderCardActions.getCardProductsResponse({
    cardProducts: cardProducts,});
  orderCardService.getCardProducts.and.returnValue(of(cardProducts));

  actions = hot('-a-',{ a: action });
  const expected = cold('-b',{ b: outcome });
  expect(effects.cardProductsRequest$).toBeObservable(expected);
});

我收到此错误

Error: Expected $[0].notification.value.cardProducts = undefined to equal [ Object({ productNumber: 192,name: '6sVnCHKtQZTuPW7xUowimmjuoqn641Qi',description: 'EuCGQwFtOzBZjwxPOOG4QNja9CZxCaPJC3bGnvtMsv7lSbqH9ux9KHc6Jw7ES65cghOfIeaCH3FYojcf',price: Object({ price: 'Wxpk3x7QZfZQylXKvI7Y',additionalinformation: 'k7wrpMDurXWIV46bfSoWjrzWr8nsgSDbPdz70faJNjZ0aweAh9' }),validAccounts: [  ],creditMaxes: [  ],cardDesigns: [  ] }) ].

我不确定这是因为我没有正确测试我的效果是否丢失了数据,还是我的testdata错误或期望错误?有什么想法吗?

谢谢
索伦

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)