Batjocorind EventAggregator CAL cu Moq

voturi
3

Sunt folosind Composite Application Biblioteca eveniment agregator lui, și ar dori să creeze o machetă pentru IEventAggregator interfață, pentru utilizare în testul meu unitate.

Sunt de planificare cu privire la utilizarea Moq pentru această sarcină, și un exemplu de test arata pana acum ceva de genul:

var mockEventAggregator = new Mock<IEventAggregator>();
var mockImportantEvent = new Mock<ImportantEvent>();
mockEventAggregator.Setup(e => e.GetEvent<SomeOtherEvent>()).Returns(new Mock<SomeOtherEvent>().Object);
mockEventAggregator.Setup(e => e.GetEvent<SomeThirdEvent>()).Returns(new Mock<SomeThirdEvent>().Object);
// ...
mockEventAggregator.Setup(e => e.GetEvent<ImportantEvent>()).Returns(mockImportantEvent.Object);

mockImportantEvent.Setup(e => e.Publish(It.IsAny<ImportantEventArgs>()));

// ...Actual test...

mockImportantEvent.VerifyAll();

Aceasta funcționează bine, dar aș dori știu, dacă există un mod inteligent de a evita să definească un gol mostră pentru fiecare eveniment de tip codul meu s-ar putea întâlni (SomeOtherEvent, SomeThirdEvent, ...)? Am putea defini, desigur, toate evenimentele mele în acest fel într-o metodă [TestInitialize], dar aș dori să știu dacă există un mod mai inteligent? :-)

Întrebat 12/03/2009 la 13:38
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
1

Am găsit soluția pentru asta:

var mockEventAggregator = new Mock<IEventAggregator>{ DefaultValue = DefaultValue.Mock };

va face revenirea mockEventAggregator își bate joc pentru toate obiectele imbricate.

Publicat 18/03/2009 la 08:04
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more