Page 278 - AngularJS权威教程
P. 278
258 第 19 章 测试
测试建立好了之后,我们既有了FrameController的一个实例,也有了这个控制器的$scope。
现在可以用这个scope来测试FrameController上的作用域了。
在FrameController里,我们有一个时钟在应用顶部显示当前时间。我们也可以访问一个用
户和他的时区。
控制器代码的相关部分看起来像这样:
angular.module('myApp.controllers', [])
.controller('FrameController',
function($scope, $timeout) {
$scope.time = {
today: new Date()
};
$scope.user = {
timezone: 'US/Pacific'
}
var updateClock = function() {
$scope.time.today = new Date();
};
var tick = function() {
$timeout(function() {
$scope.$apply(updateClock);
tick();
}, 1000);
}
tick();
});
为了测试关注点,我们的FrameController已经刻意简化过了。要看到示例应
用的完整测试套件,可以查阅本书附带的代码。
我们会测试控制器的两个功能:
时间已被定义;
用户已被定义,并且有时区。
// 测试FrameController的值
it('should have today set', function() {
expect(scope.time.today).toBeDefined();
});
it('should have a user set', function() {
expect(scope.user).toBeDefined();
});
2. 端到端测试控制器
对控制器的端到端测试结果看上去与测试页面内容按预期渲染的结果很像:我们要测试控制
器里的所有函数确实触发了。
要测试页面是不是被渲染了,可以在浏览器中加载相关页面,测试我们所期待的内容是否在
视图中渲染了。
端到端测试的样板看起来如下所示: