Angularjs 未知提供程序:$angularFileUploadProvider<;-$茉莉花角度测试中的角度

Angularjs 未知提供程序:$angularFileUploadProvider<;-$茉莉花角度测试中的角度,angularjs,jasmine,karma-jasmine,Angularjs,Jasmine,Karma Jasmine,我有一个关于角度模块的指令,我正试图为它编写测试。首先,我甚至不清楚如何正确地测试这个指令,但在这一点上,当karma运行测试时,我得到了以下错误 Unknown provider: $angularFileUploadProvider <- $angularFileUpload 这是我的karma配置文件 module.exports = function(config){ config.set({ basePath : './', files : [

我有一个关于角度模块的指令,我正试图为它编写测试。首先,我甚至不清楚如何正确地测试这个指令,但在这一点上,当karma运行测试时,我得到了以下错误

Unknown provider: $angularFileUploadProvider <- $angularFileUpload
这是我的karma配置文件

module.exports = function(config){
  config.set({

    basePath : './',

    files : [
      'vendor/assets/javascripts/angular/angular.js',
      'vendor/assets/javascripts/angular-route/angular-route.js',
      'vendor/assets/javascripts/angular-animate/angular-animate.js',
      'vendor/assets/javascripts/ng-file-upload-shim/angular-file-upload.js',
      'vendor/assets/javascripts/ng-file-upload/angular-file-upload.js',
      'vendor/assets/javascripts/angular-mocks/angular-mocks.js',
      'app/assets/javascripts/components/**/*.js',
      'app/assets/javascripts/view*/**/*.js',
      'spec/javascripts/**/*_spec.js'
    ],

    autoWatch : true,

    frameworks: ['jasmine'],

    browsers : ['Chrome'],

    plugins : [
            'karma-chrome-launcher',
            'karma-firefox-launcher',
            'karma-jasmine',
            'karma-junit-reporter'
            ],

    junitReporter : {
      outputFile: 'test_out/unit.xml',
      suite: 'unit'
    }

  });
};

在每次安装之前,您都要在jasmine
中注入大量服务:

beforeEach(inject(function($route, $filter, $angularFileUpload, $animate, $rootScope, $compile) {
    // ...
}
您应该只注入您在每个
函数之前的
中实际使用的服务:
$rootScope
$compile

beforeEach(inject(function($compile, $rootScope) {
    // ...
});

特别是,您尝试注入的
$angularFileUpload
服务在加载的任何模块中都没有定义:
'jobBoard'
['ngRoute'、'jobFilters'、'angularFileUpload'、'ngAnimate']

这就是我试图用angular解决的问题。因此,即使模块需要所有这些-‘ngRoute’、‘jobFilters’、‘angularFileUpload’、‘ngAnimate’-您是说我不需要注入它们吗?模块正在模块定义中定义其模块依赖项:
angular.module(“MyModule”、[“OtherModule”、“OtherModule2]”)
在每个(函数(){module(“MyModule”);}
之前的测试中加载模块时,它会自动加载其依赖项。注入的不是模块,而是服务。只有当您需要在函数中使用特定的服务时,才可以注入内容:
inject(函数($http){$http.get(…);})
。希望有帮助:-)它确实有帮助-多少;)但是当我将服务减少到仅$compile和$rootScope时,我得到了这个错误-未知的提供者:$$jqLiteProvider
$$jqLiteProvider
(提供
$$jqLite
服务)定义在这里:并且
$animate
服务注入
$$jqLite
这里:非常感谢您的帮助。我的项目与一个rails解决方案中的其他两个项目一起存在。还有另一个karma配置文件正在加载不同版本的angular和angular animate。将angular文件更新为所有其他文件使用的文件解决了此问题。再次感谢!
beforeEach(inject(function($route, $filter, $angularFileUpload, $animate, $rootScope, $compile) {
    // ...
}
beforeEach(inject(function($compile, $rootScope) {
    // ...
});