2009-12-01 9 views
7

W konkretnym teście jednostkowym próbuję podnieść wydarzenie wiele razy, a następnie, aby poprawić wartość właściwości po podniesieniu ostatniego zdarzenia. Mam coś w rodzaju:Moq'ing podnoszenie zdarzeń wiele razy

Orientacja faktycznie zmieniła się tylko na wschód (ponieważ wierzę, że wydarzenie jest tylko raz podnoszone). czy robię coś źle? Po raz pierwszy użyłem moq, więc prawdopodobnie czegoś brakuje.

Cheers J

edit ... poprawny kod powinienem był używany

public void TurnRight() 
    { 
     var mockFoo = new Mock<IFoo>(); 

     SomeService someService= new SomeService(); 
     someService.Foo= mockFoo.Object; 

     mockFoo.SetupProperty(foo=> foo.Orientation); 

     mockFoo.Raise(foo=> foo.TurnedRight += null, EventArgs.Empty); 
     mockFoo.Raise(foo=> foo.TurnedRight += null, EventArgs.Empty); 
     mockFoo.Raise(foo=> foo.TurnedRight += null, EventArgs.Empty); 

     Assert.AreEqual(mockFoo.Object.Orientation, Orientation.South); 
    } 

Odpowiedz

5

mockFoo.Raise powinno być dobrze, podnosząc zdarzenie trzy razy ... Czy można umieścić punkt przerwania w procederze obsługi zdarzeń i sprawdzić, ile razy jest wywoływana?

Innym potencjalnym błędem tutaj jak widzę, jest to, że należy najpierw powiedzieć Min aby rozpocząć śledzenie wszystkich zestawów/dostaje od nieruchomości, zanim będzie można go sprawdzić (i zanim podnieść zdarzenia):

// start "tracking" sets/gets to this property 
mockFoo.SetupProperty(foo=> foo.Orientation);