62 votes

Où se trouve la documentation du MOQ ?

Où puis-je trouver une documentation complète sur les MOQ ? Je commence tout juste à utiliser le mocking et j'ai du mal à m'y retrouver. J'ai lu tous les liens sur http://code.google.com/p/moq/wiki/QuickStart mais je n'arrive pas à trouver un tutoriel ou une introduction douce.

J'ai aussi regardé brièvement Rhino Mocks mais j'ai trouvé cela très confus.


Oui - j'ai lu l'article de Stephen Walthers - très utile. J'ai également parcouru les liens. Je n'arrive pas à regarder la vidéo à http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq [lien brisé]

Plus précisément, j'essaie de déterminer si un événement a été déclenché à partir de la classe simulée. Je ne parviens pas à compiler l'exemple d'événement de la page QuickStarts. Sur les groupes Google, Daniel a expliqué que CreateEventHandler ne peut gérer qu'un événement de type EventHandler, mais même dans ce cas, je n'arrive pas à compiler le code.

Plus précisément, j'ai une classe qui implémente 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. .....
}

Comment puis-je simuler la classe pour tester si l'événement PropertyChanged a été déclenché ? Je ne peux pas réécrire l'événement en public eventHandler car j'obtiens cette erreur :

Erreur 1 'CoreServices.Notifier' ne met pas en oeuvre l'interface membre System.ComponentModel.INotifyPropertyChanged.PropertyChanged'. CoreServices.Notifier.PropertyChanged' ne peut pas implémenter 'System.ComponentModel.INotifyPropertyChanged.PropertyChanged' car il n'a pas le type de retour correspondant de 'System.ComponentModel.PropertyChangedEventHandler'.

0 votes

L'erreur affichée est un bug de Visual Studio/Compilateur. Il suffit de supprimer tout ce qui se trouve dans le dossier bin et de reconstruire.

0 votes

Le lien vers Introduction au Mocking avec Moq dans ma réponse est corrigée.

0 votes

Le lien est cassé (encore)

33voto

Dylan Beattie Points 23222

En plus du wiki et d'autres ressources en ligne, une documentation complète au format de fichier d'aide Windows .CHM est incluse dans la base de données de l'entreprise. Téléchargement binaire Moq lié à la page d'accueil du Moq

1 votes

Lien direct vers la dernière version (4.0.10827) : moq.googlecode.com/files/Moq.4.0.10827.Final.zip

0 votes

Très pittoresque et spécifique à une plateforme, mais tout à fait fonctionnel !

13 votes

Il n'y a pas assez de détails pour dire que documentation

15voto

Bill the Lizard Points 147311

Avez-vous regardé Introduction au Mocking avec Moq ? Il s'agit d'une introduction à l'utilisation de Moq, destinée à ceux qui ne connaissent pas encore les simulateurs en général, ou le framework Moq lui-même.

4voto

Brian J Cardiff Points 156

Avez-vous lu les pages liées à http://code.google.com/p/moq/wiki/QuickStart ? par exemple celui-ci (probablement déplacé vers blog personnel de stephen walthers )

1voto

TrueWill Points 14855

J'essaie de déterminer si un événement a été déclenché par la classe simulée. simulée.

Vous l'êtes ? Ou essayez-vous de déterminer si le Id a été définie ? N'oubliez pas que, par défaut, un objet fantaisie n'a aucun comportement. Il ne lève pas d'événements de notification.

Je le ferais :

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

Cela suppose que l'entité implémente une interface ; un exemple :

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

Cela dit, si Entity est un POCO sans comportement intéressant, je n'implémenterais pas non plus une interface (autre que INotifyChanged ) ni le simuler. Testez avec un véritable Entity (mais n'utilisez pas de base de données). Réservez le mocking aux services et aux dépendances complexes.

Pour d'autres fonctionnalités de Moq, voir

Simulations impératives à l'ancienne et spécifications fonctionnelles moq et Mock.Of - comment spécifier le comportement ? (fil conducteur) . J'ai également publié mon propre exemple de Spécifications fonctionnelles du Moq v4 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X