2016-11-20 9 views
0

私はplunkrを持っており、成功していないWeb上の提案のいくつかを試した後、EventEmitterのテスト方法を理解しようとしています。私は、ボタンのクリックをトリガーすることによってそれをテストする方法を知りたいです...コンポーネントテストのより多くの。コードはvoter.component.tsvoter.componet.spec.tsファイル内にあります。これに関する助けがあれば大いに感謝します。Angular2とEventEmitterをテストする

it('should emit on up/down vote click', fakeAsync((): void => { 
    let fixture: ComponentFixture = TestBed.createComponent(VoterComponent); 
    let instance: VoterComponent = fixture.componentInstance; 

    spyOn(instance.onVote, 'emit'); 
    let button = findElement(fixture, 'button:first-child'); 
    button.click(); 

    fixture.detectChanges(); 
    tick(); 

    expect(instance.onVote.emit).toHaveBeenCalled(1); 
})); 
+0

これについては何が問題ですか?それはうまく見えます。 –

+0

ありがとうございました。テストを実行すると、「期待されたスパイが呼び出されました」というエラーが表示されて失敗しています。そのため、ボタンのクリックが正しくないかどうかわかりません。これに関する助けがあれば大いに感謝します。 – CraigM

答えて

1

最初の観察は@Inputと@output装飾は常に、括弧の対が続くされる対象hereの詳細を必要とすることです。

コードの2番目の問題は、onVote()イベントハンドラメソッド内でthis.counterの代わりにcounterをインクリメントしていたことです。

また、副注釈として、VoterComponentは、親(App)コンポーネントのディレクティブ配列で宣言する必要はありません。

Working plunkr

+0

ありがとうございました。私が書いたコードをコピーして変換していくうちに、いくつかの変更が加えられているので、私がもっと簡単にやろうとしていることを実証するのは悪い試みです。ありがとうございます、特に最後の点です。しかし、私の主な質問は、その周りにテストを書くことでした。私がオリジナルの投稿に貼り付けたテストを見れば、emit関数が呼び出されていないかのように運が上がらなかったのです。 – CraigM

関連する問題