Error: Unknown provider - Karma, requirejs, angular

Error: Unknown provider - Karma, requirejs, angular

本文关键字:requirejs angular Karma Unknown provider Error      更新时间:2023-09-26

当我尝试进行测试时,我得到这个错误

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

我用的是karma和requires。

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"];
        });
    }]); })

如果我不使用angular-translate ($translate),一切都在工作,所以我不认为问题来自karma.conf.js或test-main.js (require.conf for karma)。

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

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