Jasmine在全局窗口对象上创建本机JS函数的间谍

时间:2015-03-01 21:15:01

标签: javascript jasmine

我正在编写测试以查看是否调用了Array.prototype.map。我认为这可行,因为Array.prototype.map位于全局窗口对象上:

    it("does not use Array.prototype.map", function(){

        spyOn(window, "Array.prototype.map")
        fn([2,2,3]);
        expect(Array.prototype.map.calls.count()).toEqual(0);
    });

我收到错误Array.prototype.map does not exist。当我创建自己的自定义全局函数时,此方法可以正常工作。 Based on this other post似乎可以使用我上面使用的语法监视任何全局函数。如果我创建自己的函数,则此语法有效。关于为什么Array.prototype.map返回未定义的任何想法?

1 个答案:

答案 0 :(得分:2)

希望你已经得到了答案,但对于搜索的人来说,这是因为你应该

spyOn(Array.prototype, 'map');