remarks example cref c# .net testing mocking moq

c# - example - ¿Dónde está la documentación de MOQ?



remarks c# (4)

Estoy tratando de determinar si un evento surgió de la clase burlada.

¿Eres tú? ¿O está tratando de determinar si la propiedad Id se configuró? Recuerde, por defecto un simulacro no tiene comportamiento. No está levantando eventos de notificación.

Lo haría:

const int ExpectedId = 123; mockEntity.VerifySet(x => x.Id = ExpectedId);

Esto supone que la Entidad implementa una interfaz; un ejemplo:

public interface IKeyedEntity { int Id { get; set; } }

Dicho esto, si la Entity es un POCO sin un comportamiento interesante, no implementaría una interfaz (que no sea INotifyChanged ) ni se burlaría de ella. Pruebe con una instancia de Entity real (simplemente no use una base de datos). Reserva burla para servicios y dependencias complejas.

Para obtener más características de Moq, consulte

El estilo antiguo se burla de las especificaciones funcionales moq y Mock.Of: ¿cómo especificar el comportamiento? (hilo) . También publiqué mi propio ejemplo de las especificaciones funcionales de Moq v4 .

¿Dónde puedo encontrar documentación exhaustiva para MOQ? Estoy empezando con burlas y estoy teniendo dificultades para entenderlo. He leído todos los enlaces en http://code.google.com/p/moq/wiki/QuickStart pero parece que no puedo encontrar un tutorial o una introducción suave.

También miré brevemente a Rhino Mocks, pero me pareció muy confuso.

Sí, leí el artículo de Stephen Walthers, muy útil. También revisé los enlaces. Parece que no puedo ver el video en http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq [link roto]

Específicamente, estoy tratando de determinar si un evento surgió de la clase burlada. No puedo obtener el ejemplo de eventos en la página de QuickStarts para compilar. En los grupos de google, Daniel explicó que CreateEventHandler solo puede manejar un evento de tipo EventHandler<TEventArgs> , pero incluso así no puedo obtener el código para compilar.

Más específicamente, tengo una clase que implementa INotifyChanged .

public class Entity : INotifyChanged { public event PropertyChangingEventHandler PropertyChanging; public int Id { get {return _id;} set { _id = value; OnPropertyChanged("Id"); } } protected void OnPropertyChanged(string property) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } etc ..... }

¿Cómo me burlé de la clase para probar si se PropertyChanged evento PropertyChanged ? No puedo volver a escribir el evento en el evento public event EventHandler<PropertyChangedEventArgs> porque recibo este error:

El error 1 ''CoreServices.Notifier'' no implementa el miembro de la interfaz System.ComponentModel.INotifyPropertyChanged.PropertyChanged ''. ''CoreServices.Notifier.PropertyChanged'' no puede implementar ''System.ComponentModel.INotifyPropertyChanged.PropertyChanged'' porque no tiene el tipo de retorno coincidente de ''System.ComponentModel.PropertyChangedEventHandler''.



¿Has visto Introducción a la burla con Moq ? Es una descripción introductoria del uso de Moq y está destinado a aquellos que son nuevos en burlarse en general, o en el propio framework Moq.