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.
InformationsquelleAutor Raj Rao | 2010-11-02