Page 289 - AngularJS权威教程
P. 289

19.15  测试事件    269


                      cacheIdFromPath: function(filepath) {                                          19
                          return 'app/views/' + filepath;
                      },
                      stripPrefix: 'app/'
                  },                                                                                 20
                  在我们的测试里,可以接着把templates模块注入到测试中:
                                                                                                     21
                  describe('Directive: myDirective', function () {

                      // 加载指令的模块
                      beforeEach(module('myApp'));                                                   22
                      beforeEach(module('templates'));
                  templates模块注入到测试中之后,模板就已经通过templateUrl加载到指令中去了。因为                                  23
              模板会被自动加载,无需再做什么来测试带有templateUrl的指令。
                  2. 端到端测试指令                                                                         24

                  当对指令进行端到端测试时,我们主要关心的并不是指令的功能:我们测试的是在一个全局
              视图里,用户看到了什么,做了什么。                                                                      25
                  既然只是在测试视图,指令的端到端测试看上去跟测试模板差不多。
                                                                                                     26
                   describe('E2E: directives', function() {

                       beforeEach(function() {
                           browser().navigateTo('/');                                                27
                       });

                       it('should have the welcome message', function() {                            28
                           expect(
                               element('.notification', 'Notification').html()
                          ).toContain('Notification message');
                      });                                                                            29
                  });

                                                                                                     30
              19.15  测试事件

                  在应用中使用事件,尤其是那些导致DOM产生交互的事件时,我们要建立测试来保证真实                                           31
              的事件被触发了,它也得到了期待的事件数据。

                  我们也想建立测试来为在浏览器中捕获事件设置预期,想看看我们对事件的交互是否产生了                                           32
              期望的响应。

                  1. 单元测试事件                                                                          33
                  当对事件的触发进行单元测试时,我们感兴趣的是它们究竟调用了什么,还有是否真的调用
              了正确的事件。其次,我们主要关心处理程序有它们需要的数据。                                                          34

                  使用Jasmine的辅助方法spnOn()可以非常容易地建立事件测试。
                                                                                                     35
                  设想我们在测试一个控制器,它触发了一个$emit函数。基于这个函数,我们可以建立一个
              预期:事件被触发了,并且用我们所感兴趣的任意参数调用了。
                                                                                                     36
   284   285   286   287   288   289   290   291   292   293   294