2016-11-20 95 views
0

我有一個plunkr,並試圖找出如何測試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一對括號的詳細資料的。

代碼中的第二個問題是您在onVote()事件處理函數方法內增加了counter而不是this.counter。另外,作爲附註,VoterComponent不需要在父(App)組件的指令數組中聲明。

Working plunkr

+0

謝謝你。在改變一些事情的同時複製和轉換我寫給plunkr的代碼是一個不好的嘗試,以便僅僅展示我想要做的更簡單的事情。謝謝你,特別是最後一點。但是我的主要問題是圍繞它寫一個測試 - 如果你看看我貼在原始文章中的測試,我沒有任何運氣,因爲它好像沒有調用emit函數。 – CraigM