2015-02-02 5 views
1

Я пытаюсь провести тестирование контроллера в AngularJs, и я следую инструкциям AngularJs в качестве руководства. https://docs.angularjs.org/guide/controllerнеуверенность в ошибках в модульном тестировании angularjs

в руководстве (в приведенной выше ссылке), они имеют этот код в контроллере

$scope.spice = "habanero"; 

и этот код в тесте

it('should set the default value of spice', function() { 
     expect($scope.spice).toBe('habanero'); 
    }); 

в контроллере я тестирую есть некоторые Код:

$scope.sessionViewModel = session; 

и в своем тесте я написали:

it('should set the default value of sessionViewModel', function(){ 
      expect($scope.sessionViewModel).toBe(session); 
     }); 

пока я получаю сообщение об ошибке говорящее TypeError cannot read property 'sessionViewModel' of undefined

не совсем уверен, что я сделал неправильно

весь тестовый файл:

describe('forgotPasswordCtrl function', function() { 

    describe('forgotPasswordCtrl', function(){ 
    var $scope; 
    var returnMsg = 'Forgot password response message'; 
    var returnMsgTwo = '/web/tfgm_customer'; 

    beforeEach(module('forgotPasswordApp')); 


    beforeEach(inject(function($rootScope, $controller){ 
     $scope = $rootScope.$new(); 
     $controller = ('ForgotPasswordCtrl', {$scope: $scope}); 
      })); 


     it('returns a -forgot password response- message', function(){ 
      expect($scope.globalError).toEqual(returnMsg); 
     }); 

     it('assigns a url depending on a customer match happens', function(){ 
      expect(window.location.assign).toEqual(returnMsgTwo); 
      }); 

     it('should set the default value of sessionViewModel', function(){ 
      expect($scope.sessionViewModel).toBe(session); 
     }); 
     }); 
    }); 
+0

Эта ошибка говорит о том, что $ scope не определен. Не могли бы вы разместить весь тестовый файл? –

+0

@SoroushHakami yep, done/ – RagingBull

ответ

0

Попробуйте изменить

$controller = ('ForgotPasswordCtrl', {$scope: $scope}); 

-

controller = $controller('ForgotPasswordCtrl', {$scope: $scope}); 
+0

да, я сделал это, и он ничего не изменил ... ли какой-либо другой код необходимо изменить? должно ли это теперь работать на ваш взгляд? – RagingBull

+0

Хм, не уверен. Если вы можете создать живую демонстрацию своего теста с помощью Jsfiddle.net, например, я могу еще раз взглянуть –

Смежные вопросы