Ich versuche, ein grundlegendes Komponententest-Beispiel zu erhalten. Das alles funktioniert gut mit diesemWie wird ngRoute in den Jasmine/Karma AngularJS Unit Test injiziert?
var whapp = angular.module('whapp', [])
.filter('reverse',[function(){
return function(string){
return string.split('').reverse().join('');
}
}]);
app.js und diese spec.js
describe('Filters', function(){ //describe your object type
beforeEach(module('whapp')); //load module
describe('reverse',function(){ //describe your app name
var reverse, rootScope;
beforeEach(inject(function($filter){ //initialize your filter
reverse = $filter('reverse',{});
}));
it('Should reverse a string', function(){ //write tests
expect(reverse('rahil')).toBe('lihar'); //pass
});
});
});
mit diesem Karma Dateien
files: [
'node_modules/angular/angular.js',
'node_modules/angular-mocks/angular-mocks.js',
'node_modules/angular-mocks/angular-route/angular-route.js',
'node_modules/angular-mocks/angular-ui-router/release/angular-ui-router.js',
'app/js/*.js',
'tests/*.js'
]
Config
Das Problem tritt auf, wenn ich versuche ngRoute zu injizieren in mein Modul in app.js so
var whapp = angular.module('whapp', ['ngRoute'])
.filter('reverse',[function(){
return function(string){
return string.split('').reverse().join('');
}
}]);
In diesem Fall ich folgende Fehlermeldung in Karma erhalten [UPDATE: Dieser Fehler tritt auf, auch wenn ich, wie oben gezeigt, nicht die Winkel mock.js Bibliothek in Karma laden]
TypeError: undefined is not a constructor (evaluating 'reverse('rahil')') in tests/spec.js (line 9)
So ... wie tun Ich injude ngRoute korrekt in spec.js? Ich habe verschiedene Dinge ausprobiert, von denen keine funktionierte.
Was passiert, wenn Sie den Mock von ng-route nicht laden, sondern nur den in angular.js laden? –
@Amy Blankenship. Ich bekomme den Fehler beschrieben. Ich lade nicht den Mock von ng-route, weil ich nicht weiß wie ... genau das ist die Frage - wie kann ich den Mock von ng-route laden? Es sei denn, Sie sprechen über das Dateiattribut in der Karma-Konfiguration? Wenn ich diese entferne, bekomme ich immer noch den gleichen Fehler. – geoidesic
Ähm, du bist absolut, es sei denn, es ist nur eine Phantomdatei, die nicht im Pfad ''node_modules/angular-mocks/angular-route/angular-route.js'' existiert. Wenn es dort nicht existiert, könnte das das Problem verursachen. –