在Angular中的单元测试中编译嵌套指令

时间:2015-07-07 00:04:50

标签: javascript angularjs unit-testing

我在自定义指令的模板中有一个嵌套自定义指令。类似的东西:

customDirective定义

<custom-directive></custom-directive>

customDirective.js

angular.module('example')
   .directive('customDirective', function() {
      return {
         restrict: 'E',
         replace: true,
         transclude: true,
         templateUrl: 'directives/customDirective.html'
         link: function(scope, element, attrs) {}
      };
   });

内部&#39;指令/ customDirective.html

<div class="customDirective">
    <!-- do a bunch of stuff-->

    <!-- but wait, i have an image with a custom-fallback-src directive -->
    <img src="image.jpg" custom-fallback-src='newImage.jpg' />
</div>

customFallbackSrc.js指令

angular.module('example')
   .directive('customFallbackSrc', function() {
      return {
         restrict: 'A',
         link: function(scope, element, attrs) {

           // if image throws an error, use fallback image
           element.bind('error', function() {
              attrs.$set('src', attrs.customFallbackSrc);
           });

         }
      };
   });

customDirective的单元测试中,如何正确编译指令以包含任何嵌套指令?

1 个答案:

答案 0 :(得分:1)

如果你想要全面报道,我相信你最好的策略是:

  1. 编写用于测试其核心功能的customDirective的单元测试。在这个例子中它非常稀疏,所以这是多么必要,我不确定。
  2. 编写用于测试其核心功能的customFallbackSrc的单元测试。根据提供的示例,您应该测试两种情况:
    • 如果原始图像加载,则不会被替换。
    • 当加载原始图像时出错,加载后备图像
  3. 使用Protractor编写集成测试以涵盖两者之间的关系。