web-dev-qa-db-fra.com

Mock window.location.reload dans le test de jasmin

J'ai créé une fonction window.location.reload dans mon javascript.

Je dois me moquer de la fonction de rechargement pendant les tests dans Jasmine, car elle continue à boucler.

Le test se passe bien lorsque je lance grunt jenkins. Mais pas tout en testant dans le navigateur (mozilla/chrome).

Voici mon extrait de code.

Javascript:

window.location.reload();

Test au jasmin:

spyOn(window.location, 'reload').and.callFake(function(){});

Quelqu'un peut-il m'aider s'il vous plaît à ce sujet?

12
Viji Pandithurai

Merci de partager vos points de vue.

J'ai fait un travail autour de comme suggéré et c'était réussi.

Puisque window est un objet de navigateur et qu’on ne peut l’espionner, j’ai juste enveloppé la fonction en JavaScript et l’a référée dans mes spécifications de test.

Code Javascript:

var function = windowReload(){
    window.location.reload();
}

appelez la fonction windowReload() si nécessaire.

Test au jasmin:

spyOn(obj, 'windowReload').andCallFake(function(){});
8
Viji Pandithurai

Vous devriez toujours utiliser $window au lieu de window.

Essaye ça:

$window = jasmine.createSpy('$window');

ou créez simplement le vôtre:

$window = {location:{reload:function(){}}};
1
mkaj

Je viens de rencontrer le même problème. window.location = '' cause la boucle inf lors de l'exécution dans le navigateur. Une solution simple est définie window.location = '#' pour arrêter le rechargement.

0
wanana