2016-05-19 14 views
0

Ich versuche, eine meiner Direktiven zu testen, und ich kann nicht herausfinden, warum mein Scope-Objekt undefiniert ist.Testen des AngularJS-Richtlinienbereichs undefined

define(["require", "exports", 'angular', 'directives', "angularMocks", "chartApp"], function (require, exports, angular, Directives) { 
    "use strict"; 
    describe('board controls', function() { 
     describe('task filter', function() { 
      var $compile; 
      var $rootScope; 
      var scope; 
      var element; 
      beforeEach(angular.mock.module('chartApp')); 
      beforeEach(angular.mock.module('partials/directives/board-controls.html')); 
      beforeEach(inject(function (_$compile_, _$rootScope_) { 
       $compile = _$compile_; 
       $rootScope = _$rootScope_; 
       scope = $rootScope.$new(); 
       expect(scope).toBeDefined(); 
       element = $compile('<board-controls></board-controls>')(scope); 
       scope.$digest(); 
      })); 
      it('displays modal', function() { 
       scope.showChildFilters(); 
      }); 
     }); 
    }); 
}); 

In den it('displays modal')... Teil Karma Ausgänge:

TypeError: undefined is not an object (evaluating 'scope.showChildFilters')

Aber im beforeEach(...) Teil es scheint zu funktionieren. Ich kann einfach nicht verstehen, warum das nicht funktioniert.

Antwort

0

Sie müssen auch auf diese

it('displays modal', function() { 
     //scope.showChildFilters(); 

    var isolateScope = element.isolateScope(); //I prefer to name isolateScope 
    isolateScope.$apply() //cause scope to digest and watch and all that 

    isolateScope.showChildFilters(); 
    }); 

Dies ist eine sehr ausführliche Antwort auf Ihre Frage ändern. Testing element directive - can't access isolated scope methods during tests