改变功能范围

时间:2016-08-12 03:25:09

标签: javascript node.js sinon

我正在尝试测试这个模块:

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”

如果我用return "function B + " + this.fa()替换fb的方法体(注意添加this.),那么它会按预期工作。

有没有办法模拟一个未使用this调用的函数?

1 个答案:

答案 0 :(得分:0)

没有方便的方法。您可以创建一个对象并将其用作参考,因此您可以将该函数称为“方法”

当您将该函数称为“函数”时,会发生什么,函数本身与您导出的函数本身不同。

此读物可以更清楚地说明我所说的内容。 Understanding 'this' keyword