我试图调用一个存根的嵌套函数。
我正在使用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,则将调用您的存根函数。

09-26 07:41