且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SAP 电商云 Spartacus UI s-s-r 单元测试里的 callFake

更新时间:2022-09-14 20:59:59

callFake 的接口定义可以在 jasmine.js 里找到:


SAP 电商云 Spartacus UI s-s-r 单元测试里的 callFake


SpyStrategy.callFake, 返回 Spy 对象。


SAP 电商云 Spartacus UI s-s-r 单元测试里的 callFakeSAP 电商云 Spartacus UI s-s-r 单元测试里的 callFake

spy1 即 originalEngine,二者指向同一个对象实例:

SAP 电商云 Spartacus UI s-s-r 单元测试里的 callFake


只要 spy1 即 originalEngine 这个函数被调用,则返回 callFake 指定的 mock 版本的实现:return originalEngineInstance,后者也是个 mock 对象。


engine 本身是 Spartacus s-s-r 标准的实现,被 decorator 之后返回的新的函数,可以执行:

SAP 电商云 Spartacus UI s-s-r 单元测试里的 callFake

该函数通过闭包的方式,保存了输入参数 ngExpressEngine 的引用,而后者已经被 mock 过了:


SAP 电商云 Spartacus UI s-s-r 单元测试里的 callFake

当第50行调用这个 engine 函数时,

SAP 电商云 Spartacus UI s-s-r 单元测试里的 callFake

执行的 ngExpressEngine 即是 mock 过的函数 spy1:

SAP 电商云 Spartacus UI s-s-r 单元测试里的 callFake

spy1 一旦被调用,就会返回 mock 版本的函数,即返回 originalEngineInstance 实例。

SAP 电商云 Spartacus UI s-s-r 单元测试里的 callFake