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.