63
A
答えて
119
イベントの発砲と捕獲に関するテストが必要な場合は、これを行う方法です。特定のイベントが確実に実行されるように($emit
-edまたは$broadcast
-ed)、スパイが行く方法です。あなたは$emit
または$broadcast
を呼び出すことになる範囲への参照を必要として、ちょうどこのような何かを:
spyOn(scope, "$emit")
//run code to test
expect(scope.$emit).toHaveBeenCalledWith("MY_EVENT_ID", other, possible, args);
あなたが必要としないかの引数を心配したくない場合$emit
と合格した場合は、に、$on
を置き、イベントが発生したことを知らせるフラグを設定することができます。このような何か:イベントがキャッチされたときに実行されるテスト機能($on
)については
var eventEmitted = false;
$rootScope.$on("MY_EVENT_ID", function() {
eventEmitted = true;
});
//run code to test
expect(eventEmitted).toBe(true);
、それは少し簡単です。 inject
関数から$rootScope
を取得し、目的のイベントを送信してください。
$rootScope.$broadcast("EVENT_TO_TEST", other, possible, args);
//expects for event here
は今、私はこのイベントの処理がディレクティブまたはディレクティブのテストを設定するためのコントローラ(またはその両方)に起こって想像、https://github.com/vojtajina/ng-directive-testingを参照してください。コントローラーテストの設定については、https://github.com/angular/angular-phonecat/blob/master/test/unit/controllersSpec.js#L27
を参照してください。コントローラはrootScopeなどを用いて昇給イベントを作成した後
var rootScope;
var scopeStub = beforeEach(function() {
inject(function($rootScope, _$controller_) {
rootScope = $rootScope;
scopeStub = $rootScope.$new();
$controller = _$controller_;
});
});
:ここ
0
は、以下に示すようrootScopeとスコープのスタブを初期化inijectingながらあなたは、角JS
で$ブロードキャストイベントに従うべき手順です。以下の下:
rootScope.$broadcast('eventName', parameter1);
0
我々はA1
このsintaxを使用しました=========== Controller ========
var vm = this;
$scope.$on('myEvent', function(event, data){
console.log('event number', data.id);
});
============ Test =============
it('should throw myEvent', function() {
var data = {};
$scope.$broadcast('myEvent', {id:1});
$scope.$broadcast('myEvent', {id:2});
$scope.$broadcast('myEvent', {id:3});
});
============ Output ============
Chrome LOG: '--------------------------------------------'
Chrome LOG: 'event number', 1
Chrome LOG: 'event number', 2
Chrome LOG: 'event number', 3
関連する問題
- 1. どのようにWinJSイベントを角度的に行うのですか?
- 2. 角度4単体テスト、イベント
- 3. 角度のあるサービスインスタンスをどのように破壊するのですか?
- 4. どのように角度角度2のpolyfils角度RC.1?
- 5. 角度2のテストでドロップダウントグル操作をテストするにはどうすればよいですか?
- 6. 角度アプリケーションは、どのようにして別のアプリケーションの角度モジュールを遅延ロードできますか?
- 7. Webサーバーの速度をどのようにテストできますか?
- 8. 角度ルート:ルートが存在するかどうかのテスト
- 9. どのように角度でクッキーを設定しますか?
- 10. ジョイスティックからどのように角度を取得できますか?
- 11. 角度1.xの "プラグイン"をどのように作成できますか?
- 12. どのようにしてデバイスの角度を決定できますか?
- 13. 角度2のネットワーク接続をどのように検出できますか?
- 14. $ http成功の角度をどのようにシミュレートできますか?
- 15. これをどのように角度($ window).bind()でアクセスできますか?
- 16. どのように角度2でmdbootstrapを使用できますか?
- 17. どのように角度2に位置を注入できますか?
- 18. フォーム要素の$ validはどのように角度でアクセスできますか?
- 19. 角度のテスト、私は私の角度4.1.0コンポーネントをテストしようとしています「XMLHttpRequestの」
- 20. 角度4の角度2パッケージはどのように使用できますか?
- 21. グローバルプロバイダによる角度2のテスト
- 22. グラフ1.5と角度1.5をどのように使用できますか?
- 23. ConcurrentHashMapがスレッドセーフであることをどのようにテストできますか?
- 24. 角度2の.lessコンパイラはどのように使用できますか?
- 25. 角度2 - どのように(クリック)イベント動的に追加するDIV
- 26. ポイントが三角形の上にあるかどうかのテスト
- 27. どのようにアポロの角度を観測できないのですか?
- 28. 角度2単位テスト:コンテキストメニューとダブルクリックイベントをテストするにはどうすればよいですか?
- 29. あるイベントで作成されたデータに別のイベントからどのようにアクセスできますか?
- 30. 角度ブートストラップカレンダーのイベントの詳細にカスタムテンプレートを使用するにはどうすればよいですか?
これは完全一致には適していますが、引数の部分集合とはどのように一致しますか?たとえば、argsがただ1つのオブジェクト{p1: 'yes'、p2: 'no'}である場合、p2はどんなものでも(またはイベントが存在する場合)、p1: 'yes'私はジャスミンキーボードがあることを知っていますが、それは反対であるようです。あなたが望むargsだけを期待できる中盤? –
@LukeMadera Jasmineには 'jasmine.objectContaining'があります。ドキュメントから:jasmine.objectContainingは、実際のオブジェクトの特定のキーと値のペアについてのみ期待している場合に使用します。 –
ありがとうございますが、ジャスミンを使用する方法がありますか? tobe( 'MY_EVENT_ID'); ' – cameronroe