SAP 电商云 Spartacus UI CheckoutDel
2021-12-30 本文已影响0人
华山令狐冲
文件路径: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的原创文章,尽在:"汪子熙":