zl程序教程

您现在的位置是:首页 >  后端

当前栏目

答网友提问:为什么语句 var oModel = this.stub() 是构造一个stub对象? stub()是一个函数,从哪里来的?

对象 函数 一个 语句 为什么 this 构造 哪里
2023-09-14 09:03:53 时间

问题

问题来源于这篇文章SAP UI5 应用开发教程之二十七 - SAP UI5 应用的单元测试工具 QUnit 介绍网友的评论。

解答

打开 Chrome 开发者工具的 Sources 面板,找到 formatter.js 文件,我们把鼠标放在 formatter.js 文件上,

就会看到一个弹出框,上面的字段 FunctionLocation 显示了这个 stub 函数的实现位置,位于 sinon.js 文件里。

sinon 是一个著名的前端测试 Mock 框架,在笔者的汪子熙纪念特洛伊英雄 Sinon - SAP UI5 Mock Server 使用步骤和工作原理介绍里有详细介绍。

我们在第 20 行代码设置断点:

然后点击 Chrome 调试器的 Step Into 按钮,或者快捷键 F11,进入 stub 函数内部:

从而进入 sinon.js 文件的 stub 函数实现内部,这里使用了 JavaScript function 原型链上的原生方法 apply 来调用函数。再按 F11:

进入 3144 行,再点击 F11:

这里的 c.create(n), 即是 stub 对象实例的创建(create). 当然这些 sinon 的内部实现,也不用深究。