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
                  });
   260   261   262   263   264   265   266   267   268   269   270