MOQ - mise en place d'une méthode basée sur des valeurs d'argument (plusieurs arguments)
J'ai une interface définie comme
interface IMath
{
AddNumbersBetween(int lowerVal, int upperVal);
}
Je peux le programme d'installation de base Moq pour le ci-dessus comme suit:
Mock<IMath> mock = new Mock<IMath>();
mock.Setup(m => m.AddNumbersBetween(It.IsAny<int>(), It.IsAny<int>()));
appeler
mock.Object.AddNumbersBetween(1,4);
et vérifiez qu'il a été appelé
mock.Verify(m => m.AddNumbersBetween(1,4), Times.AtleastOnce());
Je ne peux pas comprendre comment le programme d'installation de la méthode AddNumbersBetween de telle sorte que si le upperVal est inférieure à la lowerVal une exception est levée
mock.Object.AddNumbersBetween(4,1);//should throw an exception
Essentiellement à la recherche de quelque chose comme:
mock.Setup(foo => foo.AddNumbersBetween("arg1 is higher than arg2")).Throws<ArgumentException>();
- Je recommanderais tout simplement la mise en œuvre de l'exception des jets de logique avec un Rappel, car cela vous donne le plein accès pour les deux paramètres. Autant que je sache, le paramètre correspondant clauses ne peut effectuer une logique basée sur un seul paramètre.
Vous devez vous connecter pour publier un commentaire.
Je sais que c'est d'un an, mais j'ai trouvé un moyen d'utiliser de multiples paramètres avec la dernière version de Moq au moins:
=>
entre(a, b)
et{return a < b;}
.Pour seul argument des méthodes, de la façon la plus propre serait:
Cela ne peut pas être appliquée si la méthode a plusieurs arguments. Il y a toujours une "solution de contournement" qui pourraient être utilisés, qui imite ce que vous voulez atteindre: