2014-07-23 67 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

相關問題