各位天才开发者,
目前我正在学习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'