угловая проблема модульного тестирования с назначением местоположения окна

В моем ctrl у меня есть этот код для перехода на страницу после того, как функция завершила свою работу.

 $scope.myFunction = function(){
     //other code
     window.location.assign(url);
 }

Мой тестовый код выглядит так.

   describe('TEST', function () {
      var window;

      beforeEach(module(function($provide) {  
       //dummy window    
       window = {            
           location:{href:function(){return 'dummy'},assign:function()
            {return 'dummy1'}}   
        };
       

         // We register our new $window instead of the old    
            $provide.constant('$window',window);
       
         }));

       it("should test",function(){
            $scope.myfunction();
       });
});

  The error that I get is ..Some of your tests did a full page reload! and the test fails.

Я следил за проблемой, описанной здесь (Модульное тестирование службы AngularJS $window ), но тот же подход не работает для меня. Есть идеи?


person Sanath    schedule 20.02.2015    source источник


Ответы (1)


Вашей функции нужно ввести $window, а не window

$scope.myFunction = function($window){
     //other code
     $window.location.assign(url);
 }

Как написано, вы обходите фиктивную службу $window и действуете на фактический собственный объект окна.

person Joe Enzminger    schedule 20.02.2015