答网友提问:为什么语句 var oModel = this.st
2022-05-05 本文已影响0人
华山令狐冲
问题
问题来源于这篇文章SAP UI5 应用开发教程之二十七 - SAP UI5 应用的单元测试工具 QUnit 介绍网友的评论。
解答
打开 Chrome 开发者工具的 Sources 面板,找到 formatter.js 文件,我们把鼠标放在 formatter.js 文件上,
![](https://img.haomeiwen.com/i2085791/0a571b05198f3f41.png)
就会看到一个弹出框,上面的字段 FunctionLocation
显示了这个 stub 函数的实现位置,位于 sinon.js
文件里。
![](https://img.haomeiwen.com/i2085791/2398a74f648e01db.png)
sinon
是一个著名的前端测试 Mock 框架,在笔者的汪子熙纪念特洛伊英雄 Sinon - SAP UI5 Mock Server 使用步骤和工作原理介绍里有详细介绍。
我们在第 20 行代码设置断点:
然后点击 Chrome 调试器的 Step Into 按钮,或者快捷键 F11,进入 stub 函数内部:
![](https://img.haomeiwen.com/i2085791/a3be2b082bca6db3.png)
从而进入 sinon.js 文件的 stub 函数实现内部,这里使用了 JavaScript function 原型链上的原生方法 apply 来调用函数。再按 F11:
![](https://img.haomeiwen.com/i2085791/b9211dae96b8d016.png)
进入 3144 行,再点击 F11:
![](https://img.haomeiwen.com/i2085791/b368f67be6c30fd6.png)
这里的 c.create(n)
, 即是 stub 对象实例的创建(create
). 当然这些 sinon 的内部实现,也不用深究。
![](https://img.haomeiwen.com/i2085791/1380e0c1896c8de0.png)