13

angularjsでディレクティブの$destroyイベントを単体テストする方法は?

ディレクティブにコードがあります:

scope.$on('$destroy', function () {
    //clean something
});

私のテストコード:

it('on destroy',function(){
    scope.$destroy();
    scope.$digest();

    //expect everything done?
});

なにか提案を!

4

4 に答える 4

10

ディレクティブのテンプレートから DOM を選択し、そのスコープを取得してから、$destroy() を実行できます。

元:

あなたのtpl:

"<div id='tuna'></div>"

あなたのテスト:

it('test on destroy', function(){
  var isolateScope = $(element).find('#tuna').eq(0).scope();
  isolateScope.$destroy();
})

あなたを助けてください!

于 2013-10-02T03:43:08.103 に答える
1

AngularisolateScopeは jQuery を使用するよりも望ましいです。次のように、テストの上の beforeEach で要素をコンパイルした可能性があります。

myEl = '<div my-el>MY EL</div>';
scope = $rootScope.$new();
directiveElement = $compile(myEl)(scope);
scope.$digest();

これで、テストでにアクセスしisolateScopeて呼び出すことができます$destroy

var isolated = directiveElement.isolateScope();
isolated.$destroy();
于 2016-05-02T15:38:55.810 に答える