zl程序教程

您现在的位置是:首页 >  其他

当前栏目

SAP 电商云 Spartacus UI CheckoutDeliveryService 的单元测试设计

2023-04-18 15:01:02 时间

文件路径:feature-libscheckoutcorefacadecheckout-delivery.service.spec.ts

新增添的方法:getSetDeliveryModeInProcess

这个方法返回的状态标志位有三个依赖:

  • ActiveCartService
  • checkoutService
  • getSetDeliveryModeProcess

当至少有一个标志位为 true 时,结果肯定为 true.

下面是几种典型的测试用例的设计。

(1) 当有一个正在进行中的 HTTP put 请求来设置 delivery mode 时, getSetDeliveryModeInProcess 方法应该返回 true.

我们在 264行代码手动调用 setDeliveryMode,这会触发一个 HTTP put 请求:

(2) 当 cart 没有达到 stable 状态时,应该返回 true.

这里我们用 spyOn 方法监控 activeCartService.isStable 方法的调用,并且在其被调用时进行拦截,返回 false.

(3) 同理,拦截 checkoutService.isLoading 方法,返回 true:

(4) 当 setDeliveryMode 触发的 HTTP put 请求成功执行时,会导致一个名为 CheckoutActions.SetDeliveryModeSuccess 的 action 投递到 Ngrx store 里。

因为在单元测试代码里,Cart service 默认为 stable,checkout service 默认为 is not loading,因此只要 HTTP put 执行完毕,该被测试的方法就应该返回 false.