自变量'controllerLogin'不是函数,未定义-AngularJs,因果报应测试

Argument 'controllerLogin' is not a function, got undefined - AngularJs, Karma Testing

本文关键字:未定义 -AngularJs 因果报应 测试 controllerLogin 自变量 函数      更新时间:2023-09-26

各位天才开发者,

目前我正在学习AngularJs,做一些基本的测试,但不断出现错误。请帮我解决这个问题。我四处寻找答案,但什么也找不到。如有任何帮助,我们将不胜感激。

下面是错误。

 `Error: [ng:areq] Argument 'controllerLogin' is not a function, got undefined

我使用的是WebStrom IDE。

这是我的控制器Login.js

"严格使用";

var loginApp = angular.module('loginApp',[]);
(function() {
    //define this for the minification of javascripts
    var loginScope=['$scope'];
    var loginController = function($scope){
        $scope.hello = "Hello Galaxy";
    };
    loginController.$inject = loginScope;
    angular.module('loginApp').controller('loginController',loginController);
}());

下面是我的登录spec.js

'use strict';
describe("app module", function () {
    beforeEach(module("loginApp"));
    describe("controllerLogin", function () {
        var scope,
            controller;
        beforeEach(inject(function ($rootScope, $controller) {
            scope = $rootScope.$new();
            controller = $controller;
        }));
        it("should assign message to hello world", function () {
            controller("controllerLogin", {$scope: scope});
            expect(scope.message).toBe("Hello Galaxy");
        });
    });
});

下面是我的galaxytest.conf.js

 // list of files / patterns to load in the browser
    files: [
        'public/scripts/angular.js',
        'public/scripts/angular-mocks.js',
        'public/src/app/*.js',
        'public/app.js',
        '**/*.js',
        'test/**/*Spec.js'
    ],

下面是我的app.js

//Define all the module with no dependencies.
angular.module('loginApp',[]);

//Now Define Main Module of the Application
var galaxyFrontendApp = angular.module('galaxyFrontendApp',['ngRoute','ui.bootstrap','loginApp']);

galaxyFrontendApp.config(['$routeProvider', function($routeProvider) {
  $routeProvider.when('/login', {templateUrl: 'src/app/modules/login/views/viewLogin.html', action: 'loginApp.loginController'});
  $routeProvider.otherwise({redirectTo: '/login'});
}]);

下面是我的index.js

<body>
        <div ng-view></div>

        <!-- Please refer all the javascript files here -->
        <!-- All the JS files from scripts folder -->
        <script src="scripts/angular.js"></script>
        <script src="scripts/angular-route.js"></script>
        <script src="scripts/ui-bootstrap.js"></script>
        <script src="app.js"></script>
        <!-- All the JS files from App folder -->
        <!-- Module Name - login -->
        <script src="src/app/modules/login/controllerLogin.js"></script>
        <script src="src/app/modules/login/directiveLogin.js"></script>


    </body>

请引导我完成这项工作。感谢您的时间和努力。

最后我得到了@DanWahlin的帮助,他发现了问题。它和我的galaxytest.conf.js文件在一起。

   files: [
       "public/scripts/angular.js",
       "public/scripts/angular-mocks.js",
       "public/scripts/ui-bootstrap.js",
       "public/scripts/angular-route.js",
       "public/app.js",
       "public/src/app/modules/login/controllerLogin.js",
       "public/test/*Spec.js"
    ],

感谢开发人员

您不应该在提供给操作的值中包含模块名称。该模块已经加载,并且它的所有控制器都在共享命名空间中。

action: 'loginController'