2012-10-22 11 views
6

Próbuję utworzyć model widoku WPV MVVM, który ma zależność wstrzykniętą System.Timing.Timer i chcę przetestować model widoku z Moq.Kpiny z timera C# z Moq

Napisałem cienką powłokę wokół klasy Timer, która ma interfejs ITimer, ale nie jestem pewien najlepszego sposobu, aby naprawdę przetestować udział zegara w klasie. Czy istnieje dobry sposób na "wymuszenie" udanego wydarzenia? Czy ktoś inny ma lepszą technikę?

+3

Spójrz na to [pytanie] (http://stackoverflow.com/questions/11495830/unit-testing-a-class-that-uses-a-timer) i to [pytanie] (http: // stackoverflow.com/questions/8940982/how-can-i-run-the-event-handler-assigned-to-mock) –

+0

Dzięki, zrobiłem trochę googlowania, ale skupiłem się na zdarzeniach w ogóle, a nie przy pomocy timerów i nie można znaleźć wielu dobrych wyników. –

Odpowiedz

3

Powinieneś przetestować swój kod w isolation. W przeciwnym razie nie wiesz, czy twój kod zachowuje się zgodnie z oczekiwaniami, czy też występuje efekt uboczny w zależności zewnętrznej. W ten sposób tworzenie ładowalnych wrapperów dla zasobów zewnętrznych (plików konfiguracyjnych, timerów itd.) Jest jedynym sposobem na oddzielenie SUT od kodu zewnętrznego.

+0

Wiem wszystko o koncepcji izolacji, stąd owijająca się puszka, którą napisałem wokół 'Timera'. Bardziej interesowały mnie techniki z kpiną z wydarzeń. Wygląda na to, że komentarz Ufuka jest tym, czego szukam. –

+0

Podnoszenie zdarzenia polega po prostu na wywoływaniu niektórych akcji w modelu przez próbę. Nie widzę w tym nic dziwnego. –