Pregunta

Estoy utilizando el Biblioteca de aplicaciones compuestas , y me gustaría crear un simulacro para la IEventAggregator , para usar en mi prueba unitaria.

Estoy planeando usar Moq para esta tarea, y un ejemplo de prueba ahora se ve algo así:

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();

Esto funciona bien, pero me gustaría saber, si hay alguna forma inteligente de evitar tener que definir una simulación vacía para cada tipo de evento que pueda encontrar mi código (SomeOtherEvent, SomeThirdEvent, ...)? Por supuesto, podría definir todos mis eventos de esta manera en un método [TestInitialize], pero me gustaría saber si hay una manera más inteligente. :-)

¿Fue útil?

Solución

Encontré la solución para este:

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

hará que el mockEventAggregator devuelva simulacros para todos los objetos anidados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top