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

文件路径:feature-libs\checkout\core\facade\checkout-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.


更多Jerry的原创文章,尽在:"汪子熙":


你可能感兴趣的:(SAP 电商云 Spartacus UI CheckoutDeliveryService 的单元测试设计)