0

Ich habe einige Direktiven ohne Verwendung von Vorlage/templateUrl. Wie kann ich einen Komponententest für diese Richtlinie schreiben? Der folgende Code ist meine Anweisung.Wie schreibe ich Komponententest für angularjs Attributtyp Direktiven in Jasmin

var app = angular.module('SampleDirective'); 

app.directive('sampleContent', [function() { 
    return { 
     restrict: 'A', 
     scope: { 

      content: '@' 
     }, 
     link: function (scope, element, attrs) { 
      var eventHandlers = []; 

      function onContentChanged(value) { 
       if (value) { 
        element.html(''); 
        element.append(value); 
       } 
      } 

      function onDestroy() { 
       angular.forEach(eventHandlers, function (callback) { 
        callback(); 
       }); 

       element.remove(); 
      } 

      eventHandlers.push(scope.$watch('content', onContentChanged)); 
      eventHandlers.push(scope.$on("$destroy", onDestroy)); 
     } 
    }; 
}]); 

kann mir jemand empfehlen, wie ein Unit-Test für diese Probe zu schreiben ..

Antwort

0

I Unit-Test für den obigen Code geschrieben haben .. es eine richtig ist ??

describe("sampleContent",() => { 

     let scope; 
     let compile; 
     let element; 

     beforeEach(angular.mock.module("SampleDirective")); 

     beforeEach(() => { 
      inject(($compile, $rootScope) => { 
       scope = $rootScope; 
       compile = $compile("<input sample-content=\"ContentValue\"></input>"); 
       element = compile(scope); 
      }); 

     }); 
     describe("onContentChanged",() => { 
      it("should validate onContentChanged when the value is a valid content",() => { 

       scope.$$childHead.content = "This is a sampleContent"; 
       scope.$digest(); 
       expect(element[0].textContent).toEqual("This is a sampleContent"); 
      }); 
      it("should validate onContentChanged when the value is not a valid content",() => { 

       scope.$$childHead.content = undefined; 
       scope.$digest(); 
       expect(element[0].textContent).toEqual(""); 
      }); 
     }); 

    }); 
Verwandte Themen