2017-07-17 8 views
1

私のアプリケーションでは、単純なクリックイベントとstopPropagationディレクティブが適用されたボタンがあります。ここでAngularディレクティブが要素に適用された方法

は、コンポーネントのテンプレートです:

<button (click)="closeElement()" [stopPropagation]> 
    Close 
</button> 

ディレクティブ単に要素上の任意のイベントをキャッチし、任意のイベントに$event.stopPropagation()をトリガします。

この指令は、独自のテストで単独でテストされています。しかし、どのように、コンポーネントで実際に適用されているディレクティブをテストするには?

+0

クリックアクションでタグを作成し、ディレクティブがそれを防止するかどうかを確認します。 – trichetriche

答えて

1

https://jasmine.github.io/2.0/introduction.htmlで説明したようなスパイを使用します。ディレクティブの機能を監視することで、 'toHaveBeenCalled'を使用してボタンがクリックされたときに呼び出されることを確認できます。

it("tracks that the spy was called", function() { 

let spy= spyOn(<yourDirective>, 'stopPropagation'); 

..trigger click event... 
expect(stopPropagation).toHaveBeenCalled();}); 

は、より多くのコードで、私はおそらく、より複雑なコーディング例を与えることができるが、これは正しい軌道に乗ってあなたを導くべきです。

+0

HTML属性が要素に存在するかどうかテストする必要があると思いますか? – BlackHoleGalaxy

+1

あなたのディレクティブが呼び出されただけでなく、TestBedのAngularを使用して要素に影響を与えているかどうかを再確認することもできます。また、fixtureのnativeElementをチェックしてquerySelectorを使用して、角度テスト](https://angular.io/guide/testing#final-setup-and-tests) これを行うには、プロジェクトのテストポリシーによって少し異なります。私は一度証明としてそれを言うが、指示が使用されるすべての要素をテストしないと言うだろう。私があなたをさらに助けることができるかどうかを教えてください。 –

+0

アドバイスありがとう:) – BlackHoleGalaxy

関連する問題