Jasmine,'Controller' 不是函数,未定义
Jasmine, 'Controller' is not a function, got undefined
我一直在尝试创建一个示例单元测试,但它一直给我一个错误 "Argument 'CalcController' is not a function, got undefined"。
我看过所有标题相同的问题,并在 Whosebug 中尝试了他们的解决方案,但它们似乎对我不起作用。
calc.controller.js
(function () {
'use strict';
angular
.module('app.calc')
.controller('CalcController', CalcController);
/** @ngInject */
function CalcController($scope) {
$scope.password = '';
$scope.grade = function () {
var size = $scope.password.length;
if (size > 8) {
$scope.strength = 'strong';
} else if (size > 3) {
$scope.strength = 'medium';
} else {
$scope.strength = 'weak';
}
}
}
});
calc.module.js
(function () {
'use strict';
angular
.module('app.calc', [])
.config(config);
/** @ngInject */
function config() {
}
})();
calc.specs.js
describe('CalcController', function() {
beforeEach(module('fuse'));
beforeEach(module('app.calc'));
var $controller;
beforeEach(inject(function(_$controller_){
$controller = _$controller_;
}));
describe('$scope.grade', function() {
it('sets the strength to "strong" if the password length is >8 chars', function() {
var $scope = {};
var controller = $controller('CalcController', { $scope: $scope });
$scope.password = 'longerthaneightchars';
$scope.grade();
expect($scope.strength).toEqual('strong');
});
});
describe('test', function() {
it('should work', function() {
expect(true).toBe(true);
});
});
});
如果您注意到示例函数是为密码输入编写的,那是因为我从同一个项目的工作测试脚本中复制了代码。但显然它的工作方式不同。
干杯
calc.controller.js的自调用函数(function(){...});
最后缺少()
所以找不到控制器.
我一直在尝试创建一个示例单元测试,但它一直给我一个错误 "Argument 'CalcController' is not a function, got undefined"。
我看过所有标题相同的问题,并在 Whosebug 中尝试了他们的解决方案,但它们似乎对我不起作用。
calc.controller.js
(function () {
'use strict';
angular
.module('app.calc')
.controller('CalcController', CalcController);
/** @ngInject */
function CalcController($scope) {
$scope.password = '';
$scope.grade = function () {
var size = $scope.password.length;
if (size > 8) {
$scope.strength = 'strong';
} else if (size > 3) {
$scope.strength = 'medium';
} else {
$scope.strength = 'weak';
}
}
}
});
calc.module.js
(function () {
'use strict';
angular
.module('app.calc', [])
.config(config);
/** @ngInject */
function config() {
}
})();
calc.specs.js
describe('CalcController', function() {
beforeEach(module('fuse'));
beforeEach(module('app.calc'));
var $controller;
beforeEach(inject(function(_$controller_){
$controller = _$controller_;
}));
describe('$scope.grade', function() {
it('sets the strength to "strong" if the password length is >8 chars', function() {
var $scope = {};
var controller = $controller('CalcController', { $scope: $scope });
$scope.password = 'longerthaneightchars';
$scope.grade();
expect($scope.strength).toEqual('strong');
});
});
describe('test', function() {
it('should work', function() {
expect(true).toBe(true);
});
});
});
如果您注意到示例函数是为密码输入编写的,那是因为我从同一个项目的工作测试脚本中复制了代码。但显然它的工作方式不同。
干杯
calc.controller.js的自调用函数(function(){...});
最后缺少()
所以找不到控制器.