2016-05-19 15 views
0

ディレクティブの1つをテストしようとしていますが、私のスコープオブジェクトが定義されていない理由を理解できません。 it('displays modal')...一部カルマ出力でAngularJSディレクティブスコープが定義されていません

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(); 
      }); 
     }); 
    }); 
}); 

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

しかし、それが動作しているようだbeforeEach(...)一部で

。なぜこれがうまくいかないのか分かりません。

答えて

0

あなたはこれが同様にあなたの質問に非常に詳細な回答である。この

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(); 
    }); 

に変更する必要があります。 Testing element directive - can't access isolated scope methods during tests

関連する問題