Компилировать вложенные директивы в модульном тесте в Angular

0

У меня есть встроенная настраиваемая директива в шаблоне пользовательской директивы. Что-то вроде:

определение 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) {}
      };
   });

Внутри 'директивы/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, как я могу правильно скомпилировать директиву, чтобы включить любые вложенные директивы?

Теги:
unit-testing

1 ответ

1

Если бы вы хотели получить полный охват, я считаю, что ваша лучшая стратегия будет заключаться в следующем:

  1. Напишите модульные тесты для customDirective которые тестируют его основные функции. В примере это очень редко, поэтому, насколько это необходимо, я не уверен.
  2. Напишите модульные тесты для customFallbackSrc которые тестируют его основные функции. Основываясь на приведенном примере, вы должны тестировать два случая:
    • То, что исходное изображение не заменяется, если оно загружается.
    • То, что резервное изображение загружается при ошибке загрузки исходного изображения.
  3. Записывайте интеграционные тесты с помощью Protractor, чтобы покрыть взаимосвязь между ними.
  • 0
    Это прямо здесь! В деталях реализации обеих директив нет ничего, что устанавливало бы какой-либо договор между ними. Два модульных теста и дополнительный интеграционный тест между ними - определенно путь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню