2014-10-09 31 views
0

我想驗證委託調用的正確性,但我必須等待定時器提高它的事件(大約5秒),所以我應該在單元測試代碼中執行一些像Thread.Sleep(5000)這樣的操作,並且我認爲它在單元測試中不是最佳實踐。如何單元測試將調用定時器處理程序中的委託的方法?

對於這種情況還有另一個更好的主意嗎?

+0

測試應該是(F)ast,(I)solated,(R)epeatable,(S)elf驗證,(T)imely所以不要在測試中插入Thread.Sleep – xeraphim 2014-10-09 09:09:35

回答

2

模擬計時器,並無需等待

+0

模擬計時器有時是個好主意,但問題是計時器不是直接由測試方法創建的,它只用於被測試方法調用的子函數,並且該子代函數也調用委託,所以我不知道如何測試它。 – theLibra12 2014-10-10 08:45:55

+0

然後,如果我理解正確,我會嘗試去耦定時器。無論如何,你能告訴我們一些代碼嗎? – Juan 2014-10-10 08:57:54

2

你需要去耦它使用定時器的代碼,使其依賴於某些抽象引發事件。讓我們說你自己的接口ITimer並注入它作爲依賴。

然後很容易模擬出ITimer立即舉起事件。

相關問題