2

我查看了有关在 Jasmine 中监视功能的其他问题,但我没有在那里得到解答。我打算用我的脚本andCallThrough来跟踪我的原始函数。src这就是我所拥有的:

describe("My Test to spy :", function() {                                       
    var mySpy = jasmine.createSpy(window, "login");                             
    beforeEach(function(){
        mySpy();
    });

    it("Expects login() will be called", function(){                               
      expect(mySpy).toHaveBeenCalled();                                         
    });    
});

所以这个测试通过了,因为它是被调用的间谍,对吗?不是函数的原始实现。所以如果我使用mySpy.andCallThrough()它会出错。这些文档都是关于链接对象和方法的。没有什么功能。需要一些帮助。

4

1 回答 1

4

问题是您使用createSpy而不是spyOn. createSpy将创建一个新的间谍,因此您无法andCallThrough在其上使用,因为没有可调用的函数。UsingspyOn将用 spy 替换现有函数并将旧函数保存在 spy 中。所以当你使用andCallThrough它时会调用这个旧方法。

您可以使用createSpy,但必须传递名称和原始函数:

jasmine.createSpy('someName', window.login)

当你使用 `spyOn' 时,你必须传递一个持有函数的对象和函数的名字:

jasmine.spyOn(window, 'login')
于 2013-07-25T17:40:55.680 回答