Aquí podría ser tu PUBLICIDAD


Burlarse del CAL EventAggregator con Moq

votos
3

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

Estoy planeando usar Moq para esta tarea, y una prueba de ejemplo hasta ahora se ve 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 existe alguna manera ingeniosa de evitar tener que definir un simulacro vacío para cada tipo de evento que mi código pueda encontrar (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. :-)

Publicado el 12/03/2009 a las 15:38
fuente por usuario toxvaerd
En otros idiomas...        العربية       

1 respuestas

votos
1

Encontré la solución para este:

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

hará que el mockEventAggregator return se burle de todos los objetos anidados.

Respondida el 18/03/2009 a las 10:04
fuente por usuario toxvaerd


Aquí podría ser tu PUBLICIDAD