2008-10-23 9 views
53

¿Dónde puedo encontrar la documentación completa 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 amable.¿Dónde está la documentación de MOQ?

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. Me parece que no puede ver el video en http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq [enlace roto]

Específicamente estoy tratando de determinar si un evento fue levantado de la clase burlado. 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 se burlan de la clase para poner a prueba si el evento PropertyChanged fue despedido? No puedo volver a escribir el evento para public event EventHandler<PropertyChangedEventArgs> becuase me sale este error:

Error 1 'CoreServices.Notifier' does not implement interface member System.ComponentModel.INotifyPropertyChanged.PropertyChanged'. 'CoreServices.Notifier.PropertyChanged' cannot implement 'System.ComponentModel.INotifyPropertyChanged.PropertyChanged' because it does not have the matching return type of 'System.ComponentModel.PropertyChangedEventHandler'.

+0

El error que se muestra es un error visual del compilador/estudio. Simplemente elimine todo de la carpeta bin y vuelva a generar. – CodingBarfield

+0

El enlace a * Introducción a Mocking * con Moq * en mi respuesta es fijo. –

+0

el enlace está roto (de nuevo) – PPC

Respuesta

15

¿Ha visto Introduction to Mocking with 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.

30

de Moq ya está disponible en la página wiki github:

https://github.com/Moq/moq4/wiki/Quickstart

antes estaban en Google Code. Además de la wiki y otros recursos en línea, hay documentación completa en el formato de archivo de ayuda .CHM de Windows incluido en el Moq binary download vinculado desde the Moq homepage.

+1

Enlace directo a la última versión (4.0.10827): http://moq.googlecode.com/files/Moq.4.0.10827.Final.zip – vossad01

+0

¡Muy pintoresco y específico de la plataforma, pero bastante funcional! –

+1

no hay suficientes detalles para llamar a eso * documentación * – anatol

1

I am trying to determine whether an event was raised from the mocked class.

¿Estás? ¿O está tratando de determinar si se configuró la propiedad Id? 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 Entity es una POCO con ningún comportamiento interesante que yo nunca hubiera hecho implementar una interfaz (que no sea INotifyChanged) ni burlarse de él. Pruebe con una instancia real de Entity (simplemente no use una base de datos). Reserva burla para servicios y dependencias complejas.

Para conocer más funciones Moq, ver

Old style imperative mocks vs moq functional specifications y Mock.Of - how to specify behavior? (thread). También publiqué mi propio ejemplo de Moq v4 functional specifications.

Cuestiones relacionadas