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