Fehler bei der Verwendung von Jasmine mit AngularJS
ich benutzeJasmin um meine zu testenAngularJs Projekt mit folgendem Code
controllerSpec.js
describe('myApp', function(){
beforeEach(angular.mock.module('myApp'));
it('should have a mailctrl', function() {
expect(myApp.mailctrl).toBeDefined();
});
});
controller.js
var myApp = angular.module('myApp', []);
myApp.controller('mailctrl', ['$scope', '$routeParams', '$rootScope', 'getMailData', '$angularCacheFactory',
function ($scope, $routeParams, $rootScope, getMailData, $angularCacheFactory) {
##....controller content....##
}
]);
SpecRunner.html
<script type="text/javascript" src="../lib/angular/angular.min.js"></script> <script type="text/javascript" src="lib/jasmine-2.0.0/jasmine.js"></script> <script type="text/javascript" src="lib/jasmine-2.0.0/jasmine.js"></script> <script type="text/javascript" src="lib/jasmine-2.0.0/jasmine-html.js"></script> <script type="text/javascript" src="lib/jasmine-2.0.0/boot.js"></script> <script type="text/javascript" src="../test/lib/angular/angular-mocks.js"></script> <script src="../js/controller.js"></script> <script src="../test/unit/controllersSpec.js"></script>
Jetzt wenn ich öffneSpecrunner.html im browser erhalte ich folgenden fehler
Erwartet, dass undefiniert definiert wird.
Ich habe folgende Frage zu oben
1) Wo irre ich mich?
2) Wie kann ich die Variable $ rootScope des Controllers verwenden?
3) Was ist der Unterschied inbeforeEach (angle.mock.module ('myApp')); undbeforeEach (angle.module ('myApp')); undbeforeEach (Modul ('myApp'));
EDIT:
Ich habe den Code als geändert
describe('myApp', function(){
beforeEach(angular.mock.module('myApp'));
it('should have a mailctrl', inject(function($rootScope, $controller) {
var controller = $controller('mailctrl', { $scope: $rootScope.$new(), $rootScope: $rootScope });
expect(controller).toBeDefined();
}));
und folgende Fehlermeldung bekommen -
Fehler: [$ injector: unpr]http://errors.angularjs.org/undefined/$ injector / unpr? p0 =% 24routeParamsProvider% 20% 3C-% 20% 24routeParams
Wenn ich andere Parameter in $ controller () hinzufüge (d. H. '$ RouteParams', 'getMailData'), tritt ein Fehler auf, da diese undefiniert sind.