2014-07-23 68 views
0

当我尝试做一个测试错误:未知提供商 - 噶,requirejs,角

Error: [$injector:unpr] Unknown provider: $translateProvider <- $translate 

我使用的是业力requirejs我得到这个错误。

loadingCtrlSpec.js 

    define([ 
    'angular', 
    'angular-mocks', 
    'app', 
    'angular-translate' 
    ], function(angular, mocks, app) { 
     'use strict'; 

     describe('loadingCtrl', function(){ 
      var ctrl, scope, translate; 
      beforeEach(mocks.module('TestApp')); 

      beforeEach(inject(function($injector){ 
       scope = $injector.get('$rootScope').$new(); 
       translate = $injector.get('$translate'); 

      }));     

      it("contains spec with an expectation", function() { 
       expect(true).toBe(true); 
      }); 

     }); 
}); 

loadingCtrl.js

define(['angular'], function (angular) { 
    'use strict'; 
    angular.module('TestApp', []) 
    .controller('loadingCtrl', ['$scope', '$translate', function($scope, $translate) { 
     $translate(['build.DEFAULT_EMAIL_SUBJECT','build.DEFAULT_EMAIL_NOTES']).then(function (translations) { 
      $scope.title = translations["build.DEFAULT_EMAIL_SUBJECT"]; 
      $scope.notes = translations["build.DEFAULT_EMAIL_NOTES"]; 
     }); 
    }]); }) 

如果我不使用角转换($翻译)一切工作,所以我不认为这个问题是从karma.conf.js或测试-main.js(对于业力的require.conf)。

+0

此错误表明,角找不到$转换模块。检查你的karma.conf,看看角度翻译文件是否被正确包含 – dpellier

回答

3

您的TestApp模块将需要指定pascalprecht.translate模块作为依赖项。所以相关的脚本被载入另外,务必在定义主模块时,包括angular-translate作为一个依赖:

define(['angular', 'angular-translate'], function (angular) { 
    angular.module('TestApp', ['pascalprecht.translate']); 
}); 
+0

问题不在loadingCtrl.js中,模块正在工作。当我运行“业力开始”,所以我认为问题是在loadingCtrlSpec.js – Vladucu

+0

为了能够在'loadingCtrlSpec.js'或'loadingCtrl.js'中的任何地方使用'$ translate'服务,依赖于'pascalprecht .translate'模块必须得到指定*某处*。我看不到'loadingCtrl'控制器如何被实例化,并且注入'$ translate'没有超出你所显示的内容。你所提供的代码中没有对这个模块的依赖(或者'$ translate'服务的定义);如果你有其他地方,你能否更新问题以显示该代码? – chrisg

+0

对于放置在“角度平移”包中的模块,不是非常标准的命名,亲爱的precht。 – Flint

相关问题