I possèdent une interface définie commeMOQ - mise en place d'une méthode basée sur des valeurs d'argument (plusieurs arguments)
interface IMath
{
AddNumbersBetween(int lowerVal, int upperVal);
}
I peut mettre en place un Moq de base de ce qui précède comme suit:
Mock<IMath> mock = new Mock<IMath>();
mock.Setup(m => m.AddNumbersBetween(It.IsAny<int>(), It.IsAny<int>()));
appel il
mock.Object.AddNumbersBetween(1,4);
puis vérifiez qu'il a été appelé
mock.Verify(m => m.AddNumbersBetween(1,4), Times.AtleastOnce());
Je ne peux pas comprendre comment configurer la méthode AddNumbersBetween telle que si la upperVal est inférieure à la lowerVal une exception est levée
mock.Object.AddNumbersBetween(4,1);//should throw an exception
recherche essentiellement quelque chose comme:
mock.Setup(foo => foo.AddNumbersBetween("arg1 is higher than arg2")).Throws<ArgumentException>();
Je recommande simplement d'implémenter la logique de lancement d'exception avec un rappel, car cela vous donne un accès complet aux deux paramètres. Autant que je sache, les clauses d'appariement de paramètres ne peuvent effectuer une logique basée sur un seul paramètre. –