我试图调用一个存根的嵌套函数。
我正在使用sinon进行存根。
function logger(){
function log(msg){
sendMsg(msg)
}
var sendMsg = function (msg){
console.log("original func")
}
return {
log:log,
sendMsg:sendMsg
}
}
我正在存根'sendMsg'函数,并尝试从
log
函数调用它,但是不是存根函数,而是原始函数。最奇怪的是,当我用
sendMsg
调用this.sendMsg
时,它会调用存根。我肯定有一个我不知道的JS原则,很高兴您能指出我一个。
谢谢
最佳答案
log()
函数直接引用符号sendMsg
来调用该函数。 sendMsg
唯一可见的log()
是为其分配了“实际”功能的局部变量。更改该返回对象上的“ sendMsg”属性的值不会影响该设置; log()
将始终调用“真实” sendMsg()
函数。
如果log()
被编写为调用this.sendMsg
,则将调用您的存根函数。