0

Ich teste einen Angular Controller mit Karma und Jasmine, aber ich kann nicht scheinen, in meinem Modul von meiner Hauptklasse zu laden.AngularJS Unit Test: Modul 'admin.module' ist nicht verfügbar

Hier ist meine Hauptklasse: admin.controller.js

angular.module('admin.module').controller('admin.controller', ['$scope', function ($scope) { 
$scope.SaveChanges = function() 
{ 
    return true; 
} 
}]); 

Hier ist mein Test-Klasse: admin.controller.tests.js

describe('admin.controller tests', function() { 

    beforeEach(module('admin.module')); 
    var $controller = {}; 

    beforeEach(inject(function (_$controller_) { 
     $controller = _$controller_; 
    })); 

    describe('$scope.SaveChanges', function() { 
     it('Should return true', function() { 
      var $scope = {}; 
      var controller = $controller('admin.controller', { $scope: $scope }); 
      expect($scope.SaveChanges()).toBe(true); 
     }); 
    }); 
}); 

Meine karma.conf.js Datei verweist auf die folgenden Dateien in meinem Projekt:

// list of files/patterns to load in the browser 
files: [ 
    '../TriAngular/scripts/angular.js', 
    '../TriAngular/scripts/angular-mocks.js', 
    '../TriAngular/app/admin/*.js', 
    'app/admin/*.js' 
], 

Die admin.controller.js Datei ist innerhalb ../TriAngular/app/admin und meine admin.controller.test.js ist in 'app/admin'.

Ich habe versucht, direkt auf die Dateien in meiner Karma-Konfigurationsdatei zu verweisen, die nicht funktioniert hat. Der vollständige Fehler lautet:

Modul 'admin.module' ist nicht verfügbar! Sie haben entweder den Modulnamen falsch geschrieben oder vergessen, ihn zu laden. Wenn Sie ein Modul registrieren, stellen Sie sicher, dass Sie die Abhängigkeiten als zweites Argument angeben.

Antwort

1

Das Problem stellte sich nicht offensichtlich aus der Ausnahme, die angezeigt wird. Mir fehlte eine Datei angular-route.js, die enthalten sein musste, da mein Admin-Modul davon abhängig war.

Liste enthält in meiner karma.conf.js Datei:

// list of files/patterns to load in the browser 
files: [ 
    '../TriAngular/scripts/angular.js', 
    '../TriAngular/scripts/angular-mocks.js', 
    '../TriAngular/scripts/angular-route.js', 
    '../TriAngular/app/admin/*.js', 
    'app/admin/*.js' 
], 
0

Versuchen;

beforeEach(function(){ 
module('admin.module'); 
    } 
}); 

Ich bin nicht vertraut mit Karma, aber Sie müssen auch auch das Modul registrieren, habe ich immer nur Jasmin mit ReSharper verwendet so, was ich tun Dateien registrieren ist;

/// <reference path="../scripts/app.js" /> 

Am Anfang der Datei.

Vergessen Sie auch nicht, die Abhängigkeiten Ihres Moduls zu referenzieren.

+0

Vielen Dank für Ihre Antwort, obwohl es immer noch mit dem gleichen Fehler aufkommt – Novastorm

Verwandte Themen