Page 290 - AngularJS权威教程
P. 290

270  第 19 章  测试


                 首先,跟往常一样,需要建立测试,这样我们可以访问控制器的作用域:

                 describe('myApp', function() {
                     var scope;
                     beforeEach(angular.mock.module('myApp'));
                     beforeEach(angular.mock.inject(function($rootScope) {
                         scope = $rootScope.$new();
                     });
                 });
                 测试建好之后,就可以简单地在作用域上为$emit或者$broadcase事件设置一个spyOn()调
             用了。

                  // ...
                  });
                  it('should have emit called', function() {
                      spyOn(scope, "$emit");
                      scope.closePanel(); // 示例
                                          // 或者任意可能导致emit被调用的事件
                      expect(scope.$emit)
                     .toHaveBeenCalledWith("panel:closed",
                         panel.id);
                 });

                 我们也可以测试事件:设置一个事件触发后调用的$on()监听器。要执行$broadcast方法,
             可以简单地在作用域上调用$broadcast,并且对事件将会导致的作用域变化建立一个预期。

                 // ...
                 it('should set the panel to closed state',
                     function() {
                         scope.$broadcast("panel:closed", 1);
                         expect(scope.panel.state).toEqual("closed");
                 });

                 2. 端到端测试事件
                 要对事件调用进行端到端测试十分简单:只要简单地测试事件产生的功能是按照我们的预期
             来触发的。


             19.16 对 Angular 的持续集成

                 Angular的Karma与持续集成服务协作得很好。持续集成服务,或者简称为CI,给了我们的应
             用一个开发的入口,让我们对每次提交的代码能按照预期运行有信心。
                 持续集成服务器在全世界大小公司和开发人员中广泛使用,学习如何建立它们会是一个不错
                                       ②
                             ①
             的主意。JenkinsCI 和TravisCI 都能很容易跟Karma集成,我们强烈推荐读者使用它们。
             19.17  Protractor

                 新的端到端测试框架称为Protractor,它将会最终取代当前框架,成为默认的框架。


             ——————————
                ① http://jenkins-ci.org
                ② travis-ci.org
   285   286   287   288   289   290   291   292   293   294   295