我在我的javascript中创建了一个window.location.reload
函数。
我需要在Jasmine中测试时模拟重载函数,因为它继续循环。
当我运行grunt jenkins
时,测试顺利。但不是在浏览器中测试(mozilla / chrome)。
这是我的代码片段。
使用Javascript:
window.location.reload();
茉莉花测试:
spyOn(window.location, 'reload').and.callFake(function(){});
有人可以帮我这个吗?
感谢您分享您的观点。
我按照建议做了一个工作,但它很成功。
由于window是一个浏览器对象,无法监视,我只是用JavaScript包装了该函数,并在我的测试规范中引用了该函数。
Javascript代码:
var function = windowReload(){
window.location.reload();
}
在需要的地方调用函数windowReload()
。
茉莉花测试:
spyOn(obj, 'windowReload').andCallFake(function(){});
你应该总是使用$window
而不是window
。
试试这个:
$window = jasmine.createSpy('$window');
或者只是制作自己的:
$window = {location:{reload:function(){}}};
我刚遇到同样的问题。 window.location =''在浏览器中运行时导致inf循环。一个简单的解决方案是设置window.location ='#'来停止重新加载。
你可以随时做:
beforeAll(() => {
window.reload = () => console.log('Mock redirect');
});
分别:
beforeAll(() => {
window.onbeforeunload = () => console.log('Mock redirect');
window.open = () => console.log('Mock redirect');
});