我查看了有关窥探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()
,则会出错。文档都是关于链接对象和方法的。功能没什么。需要一些帮助。
答案 0 :(得分:3)
问题是您使用的是createSpy
而不是spyOn
。 createSpy
将创建一个新的间谍,因此您无法使用andCallThrough
,因为没有可调用的函数。使用spyOn
将使用间谍替换现有函数并将旧函数保存在间谍中。因此,当您使用andCallThrough
时,它将调用此旧方法。
您可以使用createSpy
,但必须传递名称和原始功能:
jasmine.createSpy('someName', window.login)
当你使用`spyOn'时,你必须传递一个持有该函数的对象和该函数的名称:
jasmine.spyOn(window, 'login')