Page 265 - AngularJS权威教程
P. 265
19.12 模拟和测试帮助函数 245
<table id="phonebook"> 19
<tr ng-repeat="person in people">
<td>{{ person.name }}</td>
<td>{{ person.email }}</td>
</tr> 20
</table>
方法如下。
21
count()。count()方法返回重复器里有多少行与DOM中的jQuery选择器匹配。
repeater('#phonebook tr').count(); 22
count方法不带参数,就简单地返回一个整数。
23
column()。column()方法返回一个数组,数组中的元素是列中的值,这些值包含了与DOM
中jQuery选择器匹配的重复器中的给定绑定。
24
repeater('#phonebook tr')
.column('person.name');
column()方法带有一个字符串类型的绑定参数, 这个绑定是针对重复器中指定元素的。它 25
是在元素中渲染的绑定的名称。
row()。row()方法返回一个数组,数组中的元素是行中的值,这些值包含了与DOM中给定 26
jQuery选择器匹配的重复器中的给定绑定。
27
repeater("#phonebook tr").row(0);
row()方法带有一个整形的索引参数。
28
index是要从中返回给定绑定的列的序号。
29
19.12 模拟和测试帮助函数
开始写测试之前,我们需要理解测试的一个核心特性:模拟。在测试中,模拟是一个古老的 30
概念,允许我们在受控环境下定义模拟对象来模仿真实对象的行为。
AngularJS提供了它自己的模拟库,称为angular-mocks,它位于angular-mock.js文件中。模 31
拟对象是专门设计用于单元测试的。
要在单元测试中建立模拟对象,需要确保在Karma配置中包含了angular-mock.js文件。 32
我们必须确保test/karma.conf.js文件的files数组中包含了angular-mock.js。包含了这个依赖之
后,就可以创建Angular模块的模拟引用了。 33
例如,在一般的单元测试设置里,我们会创建一个describe执行环境,在每个测试在
describe的上下文中运行之前,我们在这个执行环境中调用angular.mock.module: 34
describe('myApp', function() {
// 模拟'myApp' angular模块 35
beforeEach(angular.mock.module('myApp'));
it('...') 36
});