改变功能范围
Changing function scope
我想测试这个模块:
function fa(){
return "function A"
}
function fb(){
return "function B + " + fa()
}
module.exports = {fa, fb}
我这样测试:
var myModule = require("./myModule")
var sinon = require("sinon")
var util = require('util');
sinon.stub(myModule,"fa").returns("stub")
console.log(myModule.fb()) //expect to display "function B + stub"
实际显示的是"函数B +函数A"
如果我将fb的方法体替换为return "function B + " + this.fa()
(注意this.
的添加),那么它将按预期工作。
是否有一种方法来模拟没有被this
调用的函数?
没有方便的方法来做到这一点。您可以创建一个对象并将其用作引用,因此您可以将该函数作为"方法"调用
实际情况是,你将该函数称为"as function",函数本身与你导出的函数不同。
这篇文章可以更清楚地说明我所说的话。理解"this"关键字
相关文章:
- 访问内部功能范围的元素,而不是敲除中的外部
- 谷歌Chrome在范围滑块禁用时卡住了's的更改功能
- 功能范围外的图像参考问题
- Angular:控制器范围内的可重用功能
- JS全局/功能范围理解
- 为什么在使用箭头键时,打开更改功能不适用于我的范围滑块
- 创建可在任何地方使用的 JS 函数?范围和功能“未定义”的问题
- 视图模型中的功能范围
- 创建高图表点击功能时丢失了 Angularjs 范围
- 当输入[范围]值更改/拇指拖动时触发功能
- 创建范围功能在除IE以外的其他浏览器中不起作用
- 角度链接功能:$Scope与范围
- 在全球范围内公开wep应用程序功能-是或否
- 未捕获范围错误:超出最大调用堆栈大小(执行背景颜色切换器功能时)
- angularjs,范围不跨功能更新-使用ngTouch
- 功能范围&进入/离开所述函数的变量
- 将一个实体的功能分配给另一个实体的功能时,范围不会更改
- 过滤器编号范围功能问题
- 谷歌地图地理编码功能-范围
- 使用moment.js、js或Jquery,在一个时间范围内打开一个功能