user3310447
user3310447

Reputation: 135

Karma angular unknown provider element

I'm getting this error when trying to test a controller in Karma:

Error: [$injector:unpr] http://errors.angularjs.org/1.2.14/$injector/unp
r?p0=%24elementProvider%20%3C-%20%24element
at c:/js/libs/angular/angular1.2.14/angular.min.js:32
at c (c:/js/libs/angular/angular1.2.14/angular.min.js:30)
at c:/js/libs/angular/angular1.2.14/angular.min.js:32
at c (c:/js/libs/angular/angular1.2.14/angular.min.js:30)
at d (c:/js/libs/angular/angular1.2.14/angular.min.js:30)
at c:/js/libs/angular/angular1.2.14/angular.min.js:31
at c:/js/libs/angular/angular1.2.14/angular.min.js:63
at c:/tests/unit/widget_tests/myTest.test.js:13
at d (c:/js/libs/angular/angular1.2.14/angular.min.js:30)
at workFn (c:/js/libs/angular/angular1.2.14/angular-mocks.js:2160)

I'm including all the angular files in karma.conf.js and compiling the controller like so:

var $scope, $http, $translate;
    beforeEach(module('myApp.services'));
    beforeEach(module('myApp.directives'));

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

    }));

    describe('Initialization :', function(){
        it('Should ', function() {
        })
    })
})

Upvotes: 1

Views: 4443

Answers (2)

user3310447
user3310447

Reputation: 135

I needed to inject the $element into the controller, though compiling the full directive is another option.

$controller('myController', {$scope : $scope, $element :$('<div></div>')});

Posting this as the duplicate question is missing an example.

Upvotes: 6

Mik378
Mik378

Reputation: 22171

Your $scope variable is undefined so far. By the way, the following should work:

var $scope, $httpBackend;

beforeEach(function() {
  module('myApp', 'myApp.services', 'myApp.directives'));
  inject(function ($rootScope, $controller, _$httpBackend_) {
    $scope = $rootScope.$new();
    $httpBackend = _$httpBackend_;
    $controller('myController', {$scope : $scope});
  }));
});

describe('Initialization :', function(){
    it('Should ', function() {
    })
});

Upvotes: 0

Related Questions