Karma jasmine Angular 1.6.2测试过滤器抛出错误未捕获错误:[$ injector:unpr]

时间:2017-03-30 15:21:24

标签: angularjs unit-testing karma-jasmine

我正在测试我的AngularJS代码,我遇到的问题是我找到的所有答案都无法修复。 我正在尝试测试一个看起来像这样的过滤器:

app.filter('capitalize', function(){
    return function(val){
        if( val && typeof val === 'string'){
            return val.charAt(0).toUpperCase() + val.substr(1).replace('_', ' ');
        }
    };
});

我的app定义为:

var app = angular.module('myApp', ["ui.router", "ui.bootstrap", "ngSanitize", "pascalprecht.translate", "angular-google-analytics", 
"ngStorage", "jsonFormatter", "selectize", "toaster"]);

我的测试看起来像:

describe('Filters Unit Test Suite:', function() {
    beforeEach(function() {
        angular.mock.module('myApp');
    });

    describe('capitalize filter', function() {
        var capitalizeFilter;
        beforeEach(inject(function(_$filter_) {
            capitalizeFilter = _$filter('capitalize');
        }));

        it('should capitalize the first letter of a string', function() {
            expect(capitalizeFilter('hello')).toEqual('Hello');
        });
    });
});

此处的每段代码都来自不同的文件,分别是filters.jsapp.jsfitler.test.js。 我使用了这些文档here和AngularJs官方测试页面here

我已经测试了几乎所有类似问题的响应,就像这里提到的那样,但似乎都没有。

非常感谢您的帮助。

如果您愿意,我可能会跳过回复,请在评论中添加链接。 我花了差不多三天的时间来寻找,在这里搜索stackoverflow的原因,并找到如何纠正它。那是我失去的太多时间,我觉得我要接近这一点,看看我错过了什么,这就是为什么我寻求你的帮助。

谢谢。

以防万一,这是我把文件放在我的业力配置文件中的方式:

  files:[

  'src/main/resources/assets/bower_components/angular/angular.js',
   'src/main/resources/assets/bower_components/angular-ui-router/release/angular-ui-router.js',
   'src/main/resources/assets/bower_components/ngstorage/ngStorage.js',
   'src/main/resources/assets/bower_components/angular-mocks/angular-mocks.js',
  'src/main/resources/assets/bower_components/jquery/dist/jquery.min.js',
  'src/main/resources/assets/bower_components/bootstrap/dist/js/bootstrap.min.js',
  'src/main/resources/assets/js/vendor/ui-bootstrap-tpls-1.2.4.min.js',
  'src/main/resources/assets/bower_components/angular-sanitize/angular-sanitize.js',
  'src/main/resources/assets/bower_components/highcharts/highcharts.js',
  'src/main/resources/assets/bower_components/highcharts/highcharts-more.js',
  'src/main/resources/assets/bower_components/angular-translate/angular-translate.js',
  'src/main/resources/assets/bower_components/moment/min/moment.min.js',
  'src/main/resources/assets/bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.js',
  'src/main/resources/assets/bower_components/angular-google-analytics/dist/angular-google-analytics.min.js',
  'src/main/resources/assets/bower_components/json-formatter/dist/json-formatter.js',
  'src/main/resources/assets/bower_components/selectize/dist/js/standalone/selectize.js',
  'src/main/resources/assets/bower_components/angular-selectize2/dist/angular-selectize.js',
  'src/main/resources/assets/bower_components/AngularJS-Toaster/toaster.min.js',

  'src/main/resources/assets/js/angular/app.js',
  'src/main/resources/assets/js/angular/filters.js',
  'src/test/resources/assets/js/angular/filters.test.js'
]

Error message image

2 个答案:

答案 0 :(得分:0)

运行代码时出现的错误是: enter image description here Here是工作小提琴。

我相信你没有添加angular-ui库。我添加了库,它工作正常。添加以下链接并再次尝试使用您的代码。

http://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.10/angular-ui-router.min.js

答案 1 :(得分:0)

经过长时间的运行,我终于明白了为什么我遇到了我提到的错误。在你的答案@clever_bassi的帮助下,我回去了,发现AuthService是一个本地进入我项目的模块。该服务是由我正在使用的开发人员之一定义的,我在错误的地方寻找它。这告诉我,我还有很长的路要走学习AngularJS的单页网站。