天才开发者你好,
目前我正在学习AngularJs并进行一些基本的测试,但不断出现错误。 请帮我解决这个问题。我四处寻找答案,却找不到任何答案。非常感谢您的任何帮助。
以下是错误。
`Error: [ng:areq] Argument 'controllerLogin' is not a function, got undefined
我正在使用WebStrom IDE。
这是我的controllerLogin.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);
}());
以下是我的loginSpec.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>
请指导我完成这个。感谢您的时间和精力。
答案 0 :(得分:3)
最后我得到了@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"
],
谢谢开发人员
答案 1 :(得分:0)
您不应在提供给操作的值中包含模块名称。该模块已加载,其所有控制器都在共享命名空间中。
action: 'loginController'