如何监视Jasmine中的原始函数而不是虚拟函数进行javascript测试?
我看了关于在Jasmine中监视函数的其他问题,但我的疑问没有得到回答。我打算使用andCallThrough跟踪src脚本中的原始函数。这就是我所拥有的:如何监视Jasmine中的原始函数而不是虚拟函数进行javascript测试?,javascript,jasmine,Javascript,Jasmine,我看了关于在Jasmine中监视函数的其他问题,但我的疑问没有得到回答。我打算使用andCallThrough跟踪src脚本中的原始函数。这就是我所拥有的: describe("My Test to spy :", function() { var mySpy = jasmine.createSpy(window, "login"); befor
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,它会给出一个错误。这些文档都是关于链接对象和方法的。函数没有。需要一些帮助。问题是您使用createSpy而不是spyOn。createSpy将创建一个新的spy,因此您不能在其上使用andCallThrough,因为没有可调用的函数。使用spyOn将用spy替换现有函数,并将旧函数保存在spy中。因此,当您使用andCallThrough时,它将调用这个旧方法 您可以使用createSpy,但必须传递名称和原始函数:
jasmine.createSpy('someName', window.login)
当您使用“spyOn”时,必须向包含函数和函数名称的对象传递:
jasmine.spyOn(window, 'login')
问题是您使用createSpy而不是spyOn。createSpy将创建一个新的spy,因此您不能在其上使用andCallThrough,因为没有可调用的函数。使用spyOn将用spy替换现有函数,并将旧函数保存在spy中。因此,当您使用andCallThrough时,它将调用这个旧方法 您可以使用createSpy,但必须传递名称和原始函数:
jasmine.createSpy('someName', window.login)
当您使用“spyOn”时,必须向包含函数和函数名称的对象传递:
jasmine.spyOn(window, 'login')
另一件事,在文档中,foo已经被初始化了。为什么呢?如果不进行初始化,我想我就不能使用spyOn。@Andreas不应该是spyOn示例窗口“login”的最后一行?另一件事,在文档中,foo已经用一些东西进行了初始化。为什么呢?如果不初始化,我认为我不能使用spyOn。@Andreas不应该是示例spyOn窗口“login”的最后一行?