Page 272 - AngularJS权威教程
P. 272
252 第 19 章 测试
控制器;
服务与工厂;
过滤器;
模板和视图;
指令;
资源;
动画。
对于每个组件,我们会看看测试的可选项,然后探讨如何用可行的方法来测试它们。
对于多数测试,基准代码看起来像这样:
describe('NAME', function() {
});
19.14.1 测试路由
测试路由时,要建立一个测试来确保应用正确地把请求导到我们感兴趣的路由去了。我们需
要检测路由是否在运作,是否找到了,或者是404了。我们要确认路由事件触发了,预期的模板
是否真的加载了。
我们可以使用单元测试或者端到端测试来测试路由。既然路由会改变页面的地址(URL)和
页面内容,我们需要检测路由是否被加载了,页面是否找到了,在这中间发生了什么。
要测试这些路由,我们假定建立了这么下面一个简单的路由代码:
angular.module('myApp', ['ngRoute'])
.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'HomeController'})
.when('/login', {
templateUrl: 'views/login.html',
controller: 'LoginController'})
.otherwise({redirectTo '/'});
})
1. 单元测试路由
为了建立用于测试路由代码的单元测试,我们需要做下面几件事。
注入$route、$location和$rootScope服务。
建立一个模拟的后端来处理XHR,获取模板代码。
设置一个地址,运行一个$digest生命周期。
我们要存储这三个服务的一个副本用于测试(location、route和rootScope),这样以后就
可以在测试中引用这些服务。
describe('Routes test', function() {
// 在测试中模拟我们的模块
beforeEach(module('myApp'));