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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage