Page 277 - AngularJS权威教程
P. 277
19.14 测试一个应用 257
19
20
21
22
图19-6 内容加载测试 23
19.14.3 测试控制器 24
控制器包含了应用的业务逻辑。控制器是$scope把控制与视图关联起来的地方。既然我们要
在控制器中做应用内的多数更新视图的工作,那就要建立测试来保证它们的行为是按预期执行的。 25
1. 单元测试控制器
26
当对控制器作单元测试时,需要建立测试来模拟Angular的行为。
在建立单元测试的过程中,需要确保: 27
建立了测试来模拟模块;
用一个已知的作用域实例来存储控制器的一个实例; 28
基于作用域来测试我们的预期。
要初始化一个控制器实例,需要使用$new()方法从$rootScope创建某作用域的一个新实例。 29
这个新实例会建立Angular在运行时使用的作用域继承。
有了这个作用域,就可以初始化一个新的控制器,把这个作用域作为控制器的$scope传递 30
过去。
describe('Unit controllers: ', function(){ 31
// 模拟myApp模块
beforeEach(module('myApp'));
describe('FrameController', function() { 32
// 局部变量
var FrameController, scope;
beforeEach(inject(
function($controller, $rootScope) { 33
// 创建子作用域
scope = $rootScope.$new();
// 创建FrameController的新实例 34
FrameController = $controller('FrameController',
{ $scope: scope });
}));
35
// 我们的测试代码放在这里
});
}); 36