天天看點

SAP Spartacus PageMetaService 的單元測試

test.js:

SAP Spartacus PageMetaService 的單元測試

PageMetaService的作用是,解析到底有哪些 PageResolver 需要執行,并排程這些 PageResolver,執行對應方法。

這些 Page Resolver 的單元測試,位于檔案 page-meta.service.spec.ts 内:

SAP Spartacus PageMetaService 的單元測試

Page resolver 的實作,位于 page 檔案夾内:

SAP Spartacus PageMetaService 的單元測試
SAP Spartacus PageMetaService 的單元測試

PageMetaResolver 是一個 abstract class:

SAP Spartacus PageMetaService 的單元測試

PageWithAllResolvers:實作了很多接口的類

SAP Spartacus PageMetaService 的單元測試

可以使用 disabledInCsr 禁掉某個 resolver:

SAP Spartacus PageMetaService 的單元測試

如果在開發模式下,不應該執行被禁用的 resolver:

SAP Spartacus PageMetaService 的單元測試

service 就是 PageMetaService,執行 getMeta 并且 subscribe 之後,會觸發 page resolver 的執行。

先要執行該 Service 類的 CMS service,調用 getCurrentPage 拿到目前 CMS 頁面類型,再根據頁面類型拿到負責的 Meta Resolver,最後調用 Resolver 進行解析。

SAP Spartacus PageMetaService 的單元測試

這就是 determine 出來的解析器:

SAP Spartacus PageMetaService 的單元測試

看注釋:在 SSR 模式下,總是執行:

SAP Spartacus PageMetaService 的單元測試

要執行這三個方法:

SAP Spartacus PageMetaService 的單元測試
SAP Spartacus PageMetaService 的單元測試

繼續閱讀