Moq essais de méthode void
Salut, je suis nouveau sur le Moq de test et d'avoir du mal à faire une simple affirmation.
Je suis à l'aide d'une interface
public interface IAdd
{
void add(int a, int b);
}
Moq pour l' IAdd
interface est:
Mock<IAdd> mockadd = new Mock<IAdd>();
mockadd.Setup(x => x.add(It.IsAny<int>(), It.IsAny<int>()).callback((int a, int b) => { a+b;});
IAdd testing = mockadd.Object;
Depuis le add
méthode est nulle, elle ne renvoie pas une valeur quelconque à faire Valoir. Comment puis-je faire valoir cette installation?
Qu'essayez-vous de test?
Je suis en train de tester cette méthode add, mais il n'a pas de type de retour. Si elle avait int comme type de retour, je voudrais mettre à l'essai les faire Valoir.AreEqual(mockadd.ajouter(2,2), 4); Mais sans type de retour comment puis-je tester la méthode add.
1. Il ne fait aucun sens pour tester une interface (ou une maquette de mise en œuvre). 2. Si vous avez une classe qui calcule quelque chose, vous pouvez rendre le résultat disponible de toute façon (via la valeur de retour ou une propriété sur cet objet)
Étrange, Ajouter ne retourne rien ??? Besoin de trouver un meilleur nom de la méthode.
Je suis en train de tester cette méthode add, mais il n'a pas de type de retour. Si elle avait int comme type de retour, je voudrais mettre à l'essai les faire Valoir.AreEqual(mockadd.ajouter(2,2), 4); Mais sans type de retour comment puis-je tester la méthode add.
1. Il ne fait aucun sens pour tester une interface (ou une maquette de mise en œuvre). 2. Si vous avez une classe qui calcule quelque chose, vous pouvez rendre le résultat disponible de toute façon (via la valeur de retour ou une propriété sur cet objet)
Étrange, Ajouter ne retourne rien ??? Besoin de trouver un meilleur nom de la méthode.
OriginalL'auteur J. Davidson | 2013-02-25
Vous devez vous connecter pour publier un commentaire.
Pourquoi se moquant est-il utilisé? Il permet de s'assurer qu'SUT (système en cours de test) interagit correctement avec ses dépendances (qui devrait se moque de lui). L'interaction correcte des moyens d'appel de dépendance correct membres avec les paramètres corrects.
Vous devriez ne jamais faire valoir sur la valeur retournée par la maquette. Qui est le mannequin de la valeur qui n'a aucun rapport avec le code de production. La seule valeur que vous devriez faire valoir sur est une valeur renvoyée par la CUS. CUS est la seule chose que vous devriez écrire des assertions.
Aussi, vous devez ne jamais tester les interfaces. Car il n'y a rien à l'épreuve. L'Interface est juste une description de l'API. Il n'a pas de mise en œuvre. Alors, arrêtez et pensez à ce code vous test ici? C'est que c'est un véritable code, qui a exécuté dans votre application?
Donc, vous devriez maquette
IAdd
interface uniquement pour objet de test qui utiliseIAdd
interface.OriginalL'auteur Sergey Berezovskiy
Mieux pour fournir plus de contexte, mais en général, il est utilisé comme cela:
serait bien d'ajouter quelques explications pour le commentaire sur la partie @PavelBakshy
OriginalL'auteur Pavel Bakshy