Comment se moquer de $de la fenêtre.emplacement.remplacer dans AngularJS test unitaire?

J'ai eu le service suivant:

angular.module("services")
.factory("whatever", function($window) {
  return {
    redirect: function() {
      $window.location.replace("http://www.whatever.com");
    }
  };
});

La façon de se moquer de $window objet de test de l'unité pour éviter le rechargement de la page lors de l'exécution de tests?

J'ai essayé d'utiliser

spyOn($window.location, 'replace').andReturn(true);

mais il n'a pas (encore "Some of your tests did a full page reload!" erreur) et

$provide.value('$window', {location: {replace: jasmine.createSpy()}})

mais j'obtenais un message d'erreur (Error: [ng:areq] Argument 'fn' is not a function, got Object) avec la trace de la pile de pointer seulement angulaire propre source, il n'est donc pas très utile...

  • J'ai été confronté au même problème. Avez-vous trouver une solution?
  • La solution fournie par PaulL pour envelopper $window.location dans un service séparé, en fait, il fonctionne très bien. N'avez pas essayé LostInComputer de solution pour le moment.
InformationsquelleAutor szimek | 2013-11-27