web-dev-qa-db-fra.com

Où est la documentation MOQ?

Où puis-je trouver une documentation complète pour MOQ? Je commence juste par me moquer et j'ai du mal à me débrouiller. 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 en douceur.

J'ai également examiné brièvement Rhino Mocks, mais je l'ai trouvé très déroutant.


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 sur 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é par la classe moquée. Je ne peux pas obtenir l'exemple des événements de la page QuickStarts à compiler. Sur les groupes Google, Daniel a expliqué que CreateEventHandler ne peut gérer qu'un événement de type EventHandler<TEventArgs>, mais même dans ce cas, je ne parviens 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 mocker la classe pour tester si l'événement PropertyChanged a été déclenché? Je ne peux pas réécrire l'événement sur public event EventHandler<PropertyChangedEventArgs> parce que j'obtiens cette erreur:

Erreur 1 "CoreServices.Notifier" n'implémente pas le membre d'interface 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'.

54
Jeremy Holt

La dernière documentation de Moq est maintenant disponible sur la page wiki de github:

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

Auparavant, ils étaient sur Google Code. En plus du wiki et d'autres ressources en ligne, il existe une documentation complète au format de fichier d'aide Windows .CHM incluse dans le téléchargement binaire Moq lié depuis la page d'accueil Moq .

31
Dylan Beattie

Avez-vous regardé Introduction à la moquerie avec Moq ? Il s'agit d'une présentation générale de l'utilisation de Moq et est destiné à ceux qui ne connaissent pas la moquerie en général ou le framework Moq lui-même.

15
Bill the Lizard

Avez-vous lu les pages liées sur https://github.com/Moq/moq4/wiki/Quickstart ? par exemple celui-ci (probablement déplacé vers blog personnel de stephen walthers )

4
Brian J Cardiff

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

Es-tu? Ou essayez-vous de déterminer si la propriété Id a été définie? N'oubliez pas, par défaut, une maquette n'a aucun comportement. Il ne s'agit pas de déclencher des événements de notification.

Je ferais:

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

Cela suppose que Entity 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 d'interface (autre que INotifyChanged) ni se moquer de lui. Testez avec une instance réelle de Entity (n'utilisez simplement pas de base de données). Réserve moqueuse pour les services et les dépendances complexes.

Pour plus de fonctionnalités Moq, voir

Mock impératif à l'ancienne vs spécifications fonctionnelles moq et Mock.Of - comment spécifier le comportement? (Thread) . J'ai également posté mon propre exemple de spécifications fonctionnelles Moq v4 .

1
TrueWill