Karma 'Unerwartete Anforderung' beim Testen der Winkelanweisung, auch mit ng-html2js

Nachdem ich den letzten Tag damit verbracht hatte, diese Arbeit zu erledigen, stellte ich fest, dass ich zu demselben Fehler zurückgekehrt war, den ich am Anfang hatte:

Fehler: Unerwartete Anforderung: GET test-Directive.html

Ich benutze Karma und Jasmine, um Anweisungen in Angular zu testen. Ich habe ähnliche Fragen zu StackOverflow durchgesehen, aber festgestellt, dass alles, was in den anderen Beispielen ausprobiert wurde, erfolglos ist.

Code-Struktur

Test-App
-src
--Laube
--lib
--js
--module
--- testDir
---- test.js
---- Test-Direktive.html
----Prüfung
----- test.spec.js
-Prüfung
--config
--- karma.conf.js
--e2e

Karma Konfig

'use strict';
module.exports = function(config){
    config.set({
    basePath: '../../',
    frameworks: ['jasmine'],
    files: [
        // Angular
        'src/bower/angular/angular.js',
        // Mocks
        'src/bower/angular-mocks/angular-mocks.js',
        // Libraries
        'src/lib/**/*.js',
        // App
        'src/js/*.js',
        'src/modules/*/*.js',
        // Tests
        'src/modules/**/test/*spec.js',
        // Templates
        'src/modules/**/*.html'
    ],
    autoWatch: false,
    singleRun: true,
    reporters: ['progress'],
    browsers: ['PhantomJS'],

    preprocessors: {
        'src/modules/**/*.html': 'ng-html2js'
    },
    ngHtml2JsPreprocessor: {
        moduleName: 'dir-templates'
    },
    plugins: [
        'karma-jasmine',
        'karma-ng-html2js-preprocessor',
        'karma-phantomjs-launcher',
        'karma-chrome-launcher',
        'karma-junit-reporter'
    ]
    });
};

test.js

'use strict';
angular.module('modules.test', []).
directive('testDirective', [function() {
    return {
        restrict: 'E',
        templateUrl: 'test-directive.html',
        link: function($scope, $elem, $attrs) {
            $scope.someFn = function() {
                angular.noop();
            };
        }
    };
}]);

test-direct.html

<span>Hello World</span>

test.spec.js

'use strict';
describe('test module', function() {
    beforeEach(module('modules.test'));
    /* -- DIRECTIVES------------------ */
    describe('directives', function() {
        var $compile, $scope, elm;
        beforeEach(module('dir-templates');
        beforeEach(inject(function($compile, $rootScope) {
            $scope = $rootScope.$new();
            elm = angular.element('<test-directive></test-directive>');
            $compile(elm)($scope);
            $scope.$digest();
        }));
        it('should have one span tag', function(){
            //Jasmine test here to check for one span tag.
        });
    });
});

Habe ein paar Dateien gekürzt, um genau dort zu bleiben, wo das Problem liegt. Beim AufrufenbeforeEach(module('dir-templates'))Sollte es alle übereinstimmenden HTML-Dateien in den $ templateCache laden und die GET-Anforderung verhindern, die den Fehler auslöst.

Jede Hilfe wäre dankbar, da sie mich wirklich verrückt gemacht hat. Bitte kommentieren Sie, wenn Sie weitere Fragen haben.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage