我得到了一個包含1個子組件的組件。是這樣的:Angular 2 - 測試回調到子組件中的事件
<custom-component (customEvent)="foo()"></custom-component>
富是做東西的功能,假設是一個簡單的增量。
我想編寫一個單元測試,以確保自定義事件發出後,實際發生的增量。
是我的嘗試目前在試做的是這樣的:
let oldValue = component.variableThatShouldBeIncremented;
childComponent.onCustomEvent.emit();
expect(component.variableThatShouldBeIncremented).toBeGreaterThan(oldValue);
這並不目前的工作。但如果我在setTimeout中包含期望值,它確實如此。這是有意義的,因爲事件是異步的。
我想擺脫setTimeout。有沒有辦法告訴「等到事件回調已經完成」?
我試着尋找例子,但我只找到了檢查發現特定事件而不是檢查發射特定事件的後果的測試。
編輯:
我走了正確的答案yurzui。代碼應該工作。我通過簡化Q的代碼犯了一個錯誤,省略了實際導致問題的代碼:foo函數。
該函數從服務調用函數,它不是一個簡單的增量。
爲了便於參考,我的實際問題是爲服務的模擬版本創建的間諜沒有在該事件處理程序中註冊對該函數的調用。現在的問題解決了
爲什麼寫'(customEvent)=「foo」'而不是'(customEvent)=「foo()」'? – yurzui
對不起,這是一個錯字。我編輯了這個問題:) –