VladMarius
VladMarius

Reputation: 23

Error: Unknown provider - Karma, requirejs, angular

I get this error when i try to make a test

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

I'm using karma with 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"];
        });
    }]); })

If i don't use angular-translate ($translate) everything is working so i don't think the problem is from karma.conf.js or test-main.js (require.conf for karma).

Upvotes: 0

Views: 2860

Answers (1)

chrisg
chrisg

Reputation: 1117

Your TestApp module will need to specify the pascalprecht.translate module as a dependency. Also be sure to include angular-translate as a dependency when defining your main module so the relevant script gets loaded:

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

Upvotes: 2

Related Questions