获取函数的上下文?

时间:2013-12-30 15:47:54

标签: javascript function jasmine

我正在使用Jasmine进行单元测试而我正在监视一个函数:

it('should loop through all inputs', function() {
    var test = function() {};
    spyOn(this, 'test').andCallThrough();
    formManager.eachInputs($unfoldedView, test);
    expect(test).toHaveBeenCalled()
});

我的问题是spyOn有两个参数:(context,function)。测试功能的上下文是什么?我如何获得它?它的上下文是这个匿名函数的内部,但我不知道如何得到它。 (我把它写成了上下文参数,但不是那样)

1 个答案:

答案 0 :(得分:1)

当您处于全局范围内时,声明的变量作为全局对象windowglobal)上的成员存在。在本地函数作用域中声明变量时,没有类似的“本地”对象。 (有关详细信息,请参阅堆栈溢出问题“JavaScript: Reference a functions local scope as an object”。)

相反,您可以使您的函数成为对象的方法,并将该对象用作上下文:

it('should loop through all inputs', function() {
    var obj = { test: function() {} };
    spyOn(obj, 'test').andCallThrough();
    formManager.eachInputs($unfoldedView, obj.test);
    expect(obj.test).toHaveBeenCalled()
});
相关问题