Ich verwende den Event Aggregator Composite Application Library und möchte einen Mock für die IEventAggregator Schnittstelle für die Verwendung in meinem Komponententest erstellen.Meckern des CAL EventAggregator mit Moq
Ich plane auf Moq für diese Aufgabe verwendet wird, und ein Beispiel Test sieht so weit etwas wie folgt aus:
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();
Dies funktioniert gut, aber ich würde gerne wissen, ob es einige clevere Weg zu Vermeiden Sie die Definition eines leeren Mocks für jeden Ereignistyp, auf den mein Code stoßen könnte (SomeOtherEvent, SomeThirdEvent, ...)? Ich könnte natürlich alle meine Ereignisse auf diese Weise in einer [TestInitialize] -Methode definieren, aber ich würde gerne wissen, ob es einen schlaueren Weg gibt?
:-)