Question

Dans un test unitaire particulier, j'essaie de générer un événement plusieurs fois, puis de spécifier une valeur de propriété après la création de l'événement final. J'ai quelque chose comme

public void TurnRight()
{
   var mockFoo = new Mock<IFoo>();

   SomeService someService= new SomeService ();
   someService.Foo= mockFoo.Object;

   mockFoo.Raise(foo=> foo.TurnedRight += null, EventArgs.Empty);
   mockFoo.Raise(foo=> foo.TurnedRight += null, EventArgs.Empty);
   mockFoo.Raise(foo=> foo.TurnedRight += null, EventArgs.Empty);

   mockFoo.VerifySet(foo=> foo.Orientation = Orientation.West);
}

L’orientation n’a en fait changé que vers l’est (car j’estime que l’événement n’est soulevé qu’une fois) Est-ce que je fais quelque chose de mal? C’est la première fois que j’utilise Moq, alors il me manque probablement quelque chose.

A bientôt J

modifier ... le code correct que j'aurais dû utiliser

public void TurnRight()
    {
       var mockFoo = new Mock<IFoo>();

       SomeService someService= new SomeService ();
       someService.Foo= mockFoo.Object;

       mockFoo.SetupProperty(foo=> foo.Orientation);

       mockFoo.Raise(foo=> foo.TurnedRight += null, EventArgs.Empty);
       mockFoo.Raise(foo=> foo.TurnedRight += null, EventArgs.Empty);
       mockFoo.Raise(foo=> foo.TurnedRight += null, EventArgs.Empty);

       Assert.AreEqual(mockFoo.Object.Orientation, Orientation.South);
    }
Était-ce utile?

La solution

mockFoo.Raise devrait être correct, il soulève l'événement trois fois ... Pouvez-vous mettre un point d'arrêt dans le gestionnaire d'événements et vérifier combien de fois il est appelé?

Comme je peux le constater, une autre erreur potentielle est que vous devez d'abord dire à Moq de commencer à suivre tous les ensembles / toutes les propriétés d'une propriété avant de pouvoir la vérifier (et avant de déclencher les événements):

// start "tracking" sets/gets to this property
mockFoo.SetupProperty(foo=> foo.Orientation);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top