答网友提问:为什么语句 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 的内部实现,也不用深究。
相关文章
- java - 对象装载数据返回
- String() 函数把对象的值转换为字符串。
- python 判断一个对象是可迭代对象
- 机器学习笔记 - 图解对象检测任务(2)
- 内建函数对象---算术仿函数
- paip.提升性能----数据库连接池以及线程池以及对象池
- 利用BeanMap进行对象与Map的相互转换
- 第68篇 QML 之 详解 JS 对象中的函数与this对象
- [h5棋牌项目]-07-系统调用delete时,会在delete内调用对象的析构函数.
- 通用判断std::map对象是否存在key的模板函数
- 【Kotlin 协程】协程取消 ③ ( finally 释放协程资源 | 使用 use 函数执行 Closeable 对象释放资源操作 | 构造无法取消的协程任务 | 构造超时取消的协程任务 )
- 【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 通过 MetaClass#invokeMethod 方法调用类其它方法 )
- java中反射机制通过字节码文件对象获取字段和函数的方法
- js函数与对象关系快速记忆
- 003-正则的扩展、数值的扩展、函数的扩展、数组的扩展、对象的扩展
- 使用/调用 函数的时候, 前面加不加 对象或 this?
- 统计输入的单词中有几个长度大于n的,n是自己指定的,用函数对象实现
- 【SystemVerilog 之 进阶内容(向UVM过渡)】~ 类型转换、虚方法、对象拷贝、回调函数、参数化的类
- (73)C#里怎么样调用WIN API的函数时传送结构或指针对象
- 5.1.7 timezone对象
- C# 利用反射根据类名创建类的实例对象
- JS 日期对象常用函数(时间常用函数、日期格式化)
- 常函数与常对象
- 第⑦讲:Ceph集群RGW对象存储核心概念及部署使用
- “error C2712: 无法在要求对象展开的函数中使用__try”解决方案