Page 286 - AngularJS权威教程
P. 286

266  第 19 章  测试


                      });

                      it('should load the home template', function()
                      {
                          expect(
                              element('#emailTable').html()
                         ).toContain('tbody');
                     });

                     it('should not load the dashboard template',
                     function() {
                         expect(
                             element('#dashboard').count()
                         ).toBe(0);
                     });
                 });
                 对视图模板创建断言很简单。

             19.14.7  测试指令

                 指令是Angular工作流程的根本。鉴于我们在Angular应用中做的绝大部分操作都是基于指令
             运作的,测试指令功能是最重要的组件测试之一,尤其是创建较大的组件时。
                 测试指令时,我们希望测试指令确实被加载到视图上了,并且也是按照我们期待它在DOM
             里$scope上的行为来运行的。

                 单元测试主要测试指令的功能,而在端到端测试里,可以检验是否在正确地使用指令。
                 1. 单元测试指令

                 单元测试指令需要建立一个测试来确保指令按照我们期望的那样来渲染。我们会要设置预
             期:绑定被正确建立了,错误按照期望的方式抛出了,视图按照预期显示了整个指令。

                 在这个测试里,我们会跟下面的指令打交道:

                  angular.module('myApp')
                  .directive('notification', function($timeout) {
                      var html = '<div class="notification">' +
                                   '<div class="notification-content">' +
                                     '<p>{{ message }}</p>' +
                                   '</div>' +
                                 '</div>';
                      return {
                          restrict: 'A',
                         scope: { message: '=' },
                         template: html,
                         replace: true,
                         link: function(scope, ele, attrs) {
                             scope.$watch('message', function(n, o) {
                                 if (n)
                                     $timeout(function() {
                                         ele.addClass('ng-hide');
                                    }, 2000);
                             });
                 }}});

                 为了单元测试指令,我们需要把它们暴露到视图中。与测试控制器类似,我们需要手动把指
   281   282   283   284   285   286   287   288   289   290   291