为什么茉莉花spyOn需要这个关键字?

时间:2019-02-06 15:15:56

标签: javascript unit-testing jasmine mocking

我有一个问题,除非使用spyOn关键字,否则茉莉花的this无效。

我有一个具有2个功能的脚本:

function fn1(){
    return fn2()
}
function fn2(){
    return 5;
}

我想在不调用fn1的情况下测试fn2,所以我将两个函数都导出到module.exports中,然后使用spyOn模拟fn2

var myScript = require('...');

spyOn(myScript, 'fn2').and.callFake(function(){
    return 15;
});

问题是,原始的fn2仍被调用(返回5),并且忽略了间谍。 但是,如果我将fn1的实现更改为

function fn1(){
    return this.fn2()
}

然后间谍工作并返回15。添加this没什么大不了的,我只是想知道为什么首先需要它。

0 个答案:

没有答案