2012-10-22 14 views
6

Sto tentando di creare un modello di visualizzazione MVVM WPF con una dipendenza iniettata System.Timing.Timer e si desidera testare il modello di visualizzazione con Moq.Utilizzo di un timer C# con Moq

Ho scritto un involucro sottile attorno alla classe Timer con un'interfaccia ITimer, ma non sono sicuro del modo migliore per testare realmente il contributo del timer alla classe. C'è un buon modo per "forzare" un finto evento trascorso? Qualcun altro ha una tecnica migliore?

+3

Dai un'occhiata a questa [domanda] (http://stackoverflow.com/questions/11495830/unit-testing-a-class-that-uses-a-timer) e questa [domanda] (http: // stackoverflow.com/questions/8940982/how-can-i-run-the-event-handler-assigned-to-mock) –

+0

Grazie, ho fatto qualche ricerca su google per questo tipo di cose, ma avevo focalizzato le mie domande sugli eventi in generale piuttosto che con i timer, e non ho potuto trovare molti buoni risultati. –

risposta

3

È necessario verificare il codice in isolation. Altrimenti non sai se il tuo codice si comporta come previsto, o c'è qualche effetto collaterale nella dipendenza esterna. La creazione di wrapper mockable per risorse esterne (file di configurazione, timer, ecc.) È l'unico modo per separare il tuo SUT da un codice esterno.

+0

Conosco tutto il concetto di isolamento, da cui l'involucro che si può ragionare su cui ho scritto in 'Timer'. Ero più interessato alle tecniche con il deridere specificamente gli eventi. Sembra che il commento di Ufuk sia quello che sto cercando. –

+0

Evidenziare l'evento è semplicemente chiamare qualche azione sul tuo modello tramite simulazione. Non vedo nulla di strano in questo. –