2015-08-28 3 views
0

Я пытаюсь проверить свой контроллер и обслуживание с помощью Jasmine.Контроллер тестирования в Jasmine AngularJS

У меня есть домашний контроллер, определенный, как показано ниже

angular.module('TFPMPortal').controller('HomeController', Home); 

    Home.$inject = ["$cookieStore", "PartsTrackHttpCallService", "$scope"]; 

    /* @ngInject */ 
    function Home(cookieStore, PartsTrackHttpCallService, scope) { 
} 

Вот мое модульное тестирование с использованием жасмина

describe('HomeController', function() { 
    var scope, ctrl, cookieStore, PartsTrackHttpService; 

    beforeEach(module('TFPMPortal')); 

    beforeEach(inject(function ($controller, $rootScope) { 
     scope = $rootScope.$new(); 
     ctrl = $controller('HomeController', { 
      cookieStore: null, 
      partsTrackHttpService: PartsTrackHttpService, 
      $scope: scope 
     }); 
    })); 

    it('should call the init data function', function() { 
     var count = 0; 
     PartsTrackHttpService.httpCall("common/tfpminitdata", scope.mc.PartsTrackProfile, true, true).then(function (response) { 
      count = response.data.SiteList.length; 
     }); 
     expect(scope.greeting).toBe("Greetings Frederik"); 
    }); 
}); 

Я получаю сообщение об ошибке - «HomeController» не является функцией, есть не определенно.

ответ

0

В каждом наборе тестов (тестовом файле) вам необходимо убедиться, что вы загружаете модуль Angular, который содержит код, который вы хотите проверить.

В этом случае ваш HomeController был объявлен в модуле под названием «TFPMPortal». Загрузите этот модуль в тесте:

beforeEach(module('TFPMPortal')); 

Обратите внимание, что это загружает модуль «TFPMPortal», но если ваш контроллер/тесты с использованием услуг/фабрик/и т.д. из других модулей в вашем приложении, вы должны загрузить эти модули слишком. Например, это выглядит, как вам нужно включить «ngCookies» (б/с вы используете $cookieStore):

beforeEach(module('TFPMPortal', 'ngCookies')); 

EDIT: На самом деле при дальнейшем рассмотрении, ваш тестовый код выше производящего $cookieStore зависимость, минуя null, поэтому ссылка на модуль ngCookies может не потребоваться ... с другой стороны, нет необходимости делать это b/c. Угловой может вводить реальный $cookieStore.

+0

lol Это уже третий раз, когда вы изменили свой комментарий. Дайте мне знать, когда вы сделаете окончательную версию: P – user728630

+0

ha ha done now! –

+0

Я загрузил модуль «TFPMPortal», как вы и предполагали, но в gitbash придет еще одна длинная двоичная ошибка. – user728630

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