2013-01-01 112 views
0

我有一個使用定時器定期調用某個功能的組件。從外面我可以配置該計時器的速率。禁用定時器的單元測試

測試這基本上是微不足道的:設置計時器,等待一段時間,計算對該函數的調用,並與您的預期進行比較。

現在還可以選擇禁用定時器。我該如何測試?

等待時間x是不夠的,因爲定時器可能會在x + 1時調用。

有沒有更好的方法?

+0

您是否使用自己的計時器或某些現有的實現? – piotrek

+0

現有的一個,實際上它是JavaScript的'setInterval'函數。 –

回答

1

不要嘗試測試您的語言的功能。如果js爲您提供方法setInterval,則假定它有效。如果你的代碼正確地調用setInterval,你應該測試什麼。我對js測試瞭解不多,但如果可以的話,只需嘲笑它並檢查它是否被調用。如果你不能嘲笑它,那麼再使用一種間接方式。爲定時器創建自己的包裝器 - 無需任何邏輯,只需傳遞調用即可。那麼在測試中,你可以檢查包裝器是否被調用。我會避免在測試中使用等待/睡眠

+0

我不想測試'setInterval'函數,我想測試它是否使用特定的間隔時間進行配置(或者,在我的特殊情況下,完全沒有)。 –

+0

等等:如果js API允許你檢查setInterval是否被配置/調用,那麼直接執行它而不用等待註冊函數被觸發。如果沒有,則創建您自己的圖層來註冊回調函數,並測試此圖層是否已正確配置/調用 – piotrek