如何解决测试触发新动作的效果
我想测试一下这种效果:
@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 举报,一经查实,本站将立刻删除。