Comment puis-je vérifier qu'une méthode a été appelée exactement une fois Moq?
Comment puis-je vérifier qu'une méthode a été appelée exactement une fois Moq? Le Verify()
vs Verifable()
chose est vraiment déroutant.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
Times.Once()
, ouTimes.Exactly(1)
:Ici sont les méthodes sur la Fois classe:
AtLeast
- Spécifie qu'une moqué de la méthode doit être appelée fois fois minimum.AtLeastOnce
- Spécifie qu'une moqué de la méthode doit être appelée une fois en tant que minimum.AtMost
- Spécifie qu'une moqué de la méthode doit être appelée fois de temps maximale.AtMostOnce
- Spécifie qu'une moqué de la méthode doit être appelée une fois, au maximum.Between
- Spécifie qu'une moqué de la méthode doit être appelée entre de et de fois.Exactly
- Spécifie qu'une moqué de la méthode doit être appelée exactement fois fois.Never
- Spécifie qu'une moqué de la méthode ne devrait pas être invoquée.Once
- Spécifie qu'une moqué de la méthode doit être appelée exactement une fois.N'oubliez pas qu'ils sont des appels de méthode; j'ai continué à obtenir trébucher, pensant qu'ils étaient des propriétés et d'oublier les parenthèses.
var mockContext = new Mock<IContext>()
pour le mettre en place.Imaginer que nous avons, la construction d'une calculatrice avec une méthode d'ajout de 2 nombres entiers. Nous allons imaginer davantage de la condition est que lorsque le complément de la méthode est appelée, elle appelle la méthode d'impression une fois. Voici comment nous pourrions tester ce:
Et voici le test réel avec vos commentaires dans le code pour plus de précisions:
Note: Par défaut Moq sera stub de toutes les propriétés et méthodes dès que vous créez un objet Fantaisie. Même sans faire appel
Setup
, Moq a déjà frappé les méthodes pourIPrinter
de sorte que vous pouvez les appelerVerify
. Toutefois, comme une bonne pratique, j'ai toujours mettre en place car nous pouvons avoir besoin pour appliquer les paramètres à la méthode pour répondre à certaines attentes ou de la valeur de retour de la méthode pour répondre à certaines attentes.Verify
,Times.Once
sans jamais suivreSetup
. Je serais certainement s'attendreVerify
à coup, dans ce cas, mais il n'a pas.Mock
objet. Même sans faire appelSetup
, Moq a déjà frappé les méthodes pourIPrinter
de sorte que vous pouvez les appelerVerify
. Toutefois, comme une bonne pratique, j'ai toujours mettre en place car nous pouvons avoir besoin pour appliquer les paramètres à la méthode ou à la valeur de retour de la méthode.Times.Exactly(1)
et ne pas échouer lorsque la méthode a été en effet appelé deux fois. Seulement après l'ajout deSetup
pour la méthode en question n'a planter correctement.Contrôleur de Test peut être :
Et Quand DeleteCars méthode appelée avec carte d'identité valide, alors on peut vérifier que, Service à la suppression de la méthode appelée exactement une fois par ce test :