2012-10-22 88 views
6

我正在嘗試創建一個WPF MVVM視圖模型,該模型注入了一個依賴項System.Timing.Timer,並且希望使用Moq測試視圖模型。用Moq嘲笑C#計時器

我寫了一個包含Timer類的薄包裝,它有一個接口ITimer,但我不確定是否真正測試計時器對類的貢獻的最佳方法。有沒有一種很好的方法來「強制」模擬已過的事件?其他人有更好的技術嗎?

+3

看看這個[問題](http://stackoverflow.com/questions/11495830/unit-testing-a-class-that-uses-a-timer)和這個[問題](http:// stackoverflow.com/questions/8940982/how-can-i-run-the-event-handler-assigned-to-mock) –

+0

謝謝,我爲這類事情做了一些Google搜索,但集中了我對事件的查詢一般而不是定時器,並且找不到很多好的結果。 –

回答

3

您應該在isolation中測試您的代碼。否則,你不知道你的代碼是否像預期那樣工作,或者在外部依賴中有一些副作用。因此,爲外部資源(配置文件,定時器等)創建可嘲諷包裝是將SUT與外部代碼分開的唯一方法。

+0

我知道所有關於隔離的概念,因此我圍繞'Timer'寫了一個錫可嘲弄的包裝。我更專注於嘲笑事件的技巧。 Ufuk的評論似乎是我正在尋找的。 –

+0

舉辦活動只是簡單地通過模擬對您的模型進行一些操作。我沒有看到任何奇怪的東西。 –