2014-09-17 2 views
2

Мой жасмин блок выглядит следующим образомМодульное тестирование контроллеров Угловая JS тест

describe('controllers', function() { 
    'use strict'; 
    beforeEach(module('myapp.controllers')); 

    angular.mock.module('myapp.controllers', function ($provide) { 
     $provide.value('$localStorage', $localStorage); 
    }); 

    it('should have a creationController', inject(function ($controller, _$rootScope_, localize) { 
     var scope = _$rootScope_.$new(); 
     var localize = localize; 
     var myCtrl1 = $controller('creationController', { 
      $scope: scope, 
      localize: localize 
     }); 
     expect(myCtrl1).toBeDefined(); 
    })); 

}); 

Когда я пытаюсь выполнить тест я получаю следующую ошибку

Error: [$injector:unpr] http://errors.angularjs.org/1.2.20/$injector/unpr?p0=localizeProvider%20%3C-%20localize 

Существует зависимость называется " локализовать ", который используется в контроллере. Однако я не могу это ввести в этот модульный тест.

Любая идея, как я могу решить эту проблему?

+0

Вы пытались сделать beforeEach (модуль ('myapp.controllers', ''))? –

+0

@JorgeSainz попробовал ваше предложение, и теперь я получаю следующее сообщение об ошибке \t Ошибка: [$ injector: modulerr] http://errors.angularjs.org/1.2.20/$injector/modulerr?p0=localize&p1=Error%3A% 20% 5B% 24injector% 3Anomod% 5D% 20http% 3A% 2F% 2Ferrors.angularjs.org% 2F1.2.20% 2F% 24injector% 2Fnomod% 3Fp0% 3Dlocalize% 0A% 20% 20% 20% 20at% 20http% 3A% 2F% 2Flocalhost% 3A9876% 2Fbase% 2Fresources% 2Flibs% 2Fangular% 2Fangular.min.js% 3F89bd1c3ea71433b7675321fdede5e2f2323e15a0% 3A20% 0A% 20% 20% 20% 20at% 20http% 3A% 2F% 2Flocalhost% 3A9876% 2Fbase% 2Fresources% 2Flibs% 2Fangular% 2Fangular.min.js% 3F89bd1c3ea71433b7675321fdede5e2 – Jani

+0

Можете ли вы создать кодировщик или sth? У меня есть пример использования жасмина 2.0 и углового 1.2.20 в кодефене, так что вы можете его разветвить: http://codepen.io/anon/pen/apAue –

ответ

0

инжектор для _componenrToBeInjected_ для инъекций. Если у вас есть имя службы localized (вы уверены, что у вас есть?), То для инъекций используйте _ localize_, поэтому ваш блок должен выглядеть так.

it('should have a creationController', inject(function ($controller, _$rootScope_, _localize_) { 
     var scope = _$rootScope_.$new(); 
     var localize = _localize_; 
     var myCtrl1 = $controller('creationController', { 
      $scope: scope, 
      localize: localize 
     }); 
     expect(myCtrl1).toBeDefined(); 
    }));