- SAP 电商云 Spartacus UI CheckoutDel
- SAP 电商云 Spartacus UI 的 Product C
- 网站上的 breadcrumb 使用场景浅析
- SAP UI5 sap.ui.vk 命名空间内的控件介绍
- HTML 按钮(button)的 disable 属性和 dis
- SAP 电商云 Spartacus UI 产品搜索结果的设计明细
- SAP 电商云 Spartacus UI Proxy Facad
- Angular @Injectable 注解的工作原理浅析
- 关于 Angular 部署以及 index.html 里 bas
- SAP 电商云 Spartacus UI 从 CMS 取回 sl
文件路径: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的原创文章,尽在:"汪子熙":

网友评论