我在Jasmine中模拟了位置重新加载功能时遇到了问题。我尝试了几种方法(method 1,method 2)来模拟任何位置重新加载事件,但没有运气。
我的情况如下。我有一个相当简单的功能:
function TestCall(xhr) {
if (xhr === 401) {
location.reload();
}
}
我尝试创建以下Jasmine测试:
it("FakeCall", function (){
spyOn(TestCall, 'reload').and.callFake(function(){});
TestCall(401);
expect(TestCall).toHaveBeenCalled(); // this should check if reload functionality have been called
});
我想模拟位置重新加载功能,但我不知道为什么这不起作用。任何人都可以指导/告诉我我做错了吗?
总代码:
describe("multiple scripts", function () {
describe("2# FakeCall", function() {
function TestCall(xhr) {
if (xhr === 401) {
location.reload();
}
}
it("2.1 # Reload", function (){
spyOn(location, 'reload');
TestCall(401);
expect(location.reload).toHaveBeenCalled();
});
});
});
答案 0 :(得分:0)
当你使用spyOn时,你将object作为第一个参数,并将其方法的名称(它是该对象的属性)作为第二个参数。
因此,spyOn(TestCall, 'reload')
使用此spyOn(location, 'reload')
代替it("FakeCall", function (){
spyOn(location, 'reload');
TestCall(401);
expect(location.reload).toHaveBeenCalled();
});
。现在应该可以了。
在你的情况下,它可能看起来像这样
{{1}}