2016-05-18 3 views
4

分度器テストで$ rootScope。$ broadcast eventを実行する方法の実例はありますか?

私が知っている分度器はこれには使用されておらず、ユニットテストにカルマを使うべきです。しかし状況は、私がプログラクタテストでイベントを放送する必要があるということです。このために私は$ rootScopeを取得する必要があります。しかし、私は分度器でそれをする方法を知らないし、私は長い時間の検索の後にインターネットで答えを見つけることに失敗した。

私は以下のユニットテストについて考えています。分度器に注射はありません。

var rootScope; 
beforeEach(inject(function($injector) { 
    rootScope = $injector.get('$rootScope'); 
})); 

$rootScope.$broadcast("EVENT_TO_TEST", other, possible, args); 

解決策が存在することを望みます。

答えて

6

あなたはブラウザ内でこのようにスクリプトを実行することができます:

browser.executeScript(" 
    angular.element('body').injector().get('$rootScope').$broadcast(...); 
"); 

またはルートスコープを取得するために異なる構文を使用して:

browser.executeScript(" 
    angular.element('body').scope().$root.$broadcast(...); 
"); 

あなたはどちらの要素によってbodyを置き換えることができ、スコープが含まれています。

+0

floribon、あなたはあなたが私をどれほど助けてくれたのか想像もできません。あなたの非常に速い返信、ありがとうございます。 IOU –

+0

それが助けてくれてうれしい、それはSOのためです。/+ 1答えを受け入れることを自由に感じてください:) – floribon

関連する問題