如何測試 event

測試 event 分成兩邊:

  • 測試 event listener:有沒有在 event 發生後做該做的事。
  • 測試 trigger event:有沒有正確 trigger event。

基本概念是驗證一方時假造另一方。

測試 event listener

檢查 event 有沒有註冊到 event listener。用「event 發生後 event listener 有沒有做該做的事」來驗證,而不是試圖 access class 的內部 event 資訊來看是否有註冊成功。例如發生 event 後系統某些狀態會改變,測試方式是在測試裡 trigger event(假造 trigger event),驗證系統狀態是否有正確改變。

如果發生 event 後會 call 某些 third party function,測試方式是先做個 mock object、inject mock object 到被測試 class,接著 trigger event,最後驗證 mock object 是否有被 call 到該 call 的 function。

測試是否有 trigger event

在測試中給要測試的 event 註冊一個假的 event listener,接著讓被測試 class 做應該要 trigger event 的事情,最後驗證假 event listener 有沒有被 call 到。

驗證假 event listener 有沒有被 call 到不一定要用 mock object,也可以是假 event listener 在被 call 到時修改 test 裡的變數,最後直接驗證該變數,這跟語言支援有關。

test framework 支援

有些 test framework 的支援「某個 event 是否有被 trigger 或 emit 的驗證」。