如何窥探原始函数而不是Jasmine中的虚拟测试用于javascript测试?

时间:2013-07-25 17:35:14

标签: javascript jasmine

我查看了有关窥探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(),则会出错。文档都是关于链接对象和方法的。功能没什么。需要一些帮助。

1 个答案:

答案 0 :(得分:3)

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

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

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

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

jasmine.spyOn(window, 'login')