【发布时间】:2015-12-05 08:07:16
【问题描述】:
全部:
我对 Angular 测试很陌生,来自它的文档: https://code.angularjs.org/1.3.15/docs/guide/unit-testing
有一个例子:
angular.module('app', [])
.controller('PasswordController', function PasswordController($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';
}
};
});
以及测试规范:
describe('PasswordController', function() {
beforeEach(module('app'));
var $controller;
beforeEach(inject(function(_$controller_){
// The injector unwraps the underscores (_) from around the parameter names when matching
$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('PasswordController', { $scope: $scope });
$scope.password = 'longerthaneightchars';
$scope.grade();
expect($scope.strength).toEqual('strong');
});
});
});
我想知道 Angular-Mock 做了什么,为什么我们可以直接使用像“inject”这样的函数,我们在哪里包含那个模块(或者它在加载时是否将该函数绑定到 WINDOW 全局对象?)? 注入函数如何告诉注入是针对控制器还是指令等,我发现它们都使用相同的注入函数。
【问题讨论】: