业力角度未知的提供者元素

时间:2014-04-09 10:37:29

标签: angularjs karma-runner

尝试在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)

我包含karma.conf.js中的所有角度文件,并像这样编译控制器:

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() {
        })
    })
})

2 个答案:

答案 0 :(得分:6)

我需要将$element注入控制器,但编译完整指令是另一种选择。

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

将此作为重复的问题发布时缺少一个示例。

答案 1 :(得分:0)

到目前为止,您的$scope变量为undefined。 顺便说一句,以下应该有效:

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() {
    })
});