J'essaie d'utiliser Moq 3.x, cela fonctionne superbement. Cependant, j'ai un problème que je n'arrive pas à résoudre. Compte tenuMoq avec l'argument Action
public interface ITestSpec
{
bool Run(Action<string, string> onIncorrectResponse);
}
Je cherche les suivantes:
var passingTestSpec = new Mock<ITestSpec>();
passingTestSpec
.Setup(m => m.Run(null))
.Returns(true);
Action<string, string> fakeAction =
(expected, actual) => { throw new Exception("Should not run"); };
Assert.IsTrue(passingTestSpec.Object.Run(fakeAction));
Mon problème est que tout appel à passingTestSpec.Object.Run (... une action ...) retourne false. Il semble que la bibliothèque Moq essaie de faire correspondre l'action à l'argument que j'ai passé à Run() dans l'appel Setup(), et échoue. Peu importe l'action que j'ai mise dans l'appel Run() ... elle retourne toujours false.
Des idées?
[Modifier] Je viens de découvrir quelque chose; si je remplace la ligne d'installation par
.Setup(m => m.Run(fakeAction))
le test passe. Cependant, je ne peux pas savoir à quelle action la méthode .Run() sera appelée, donc ce n'est pas une solution. Quelqu'un connaît-il un équivalent It.IsAny pour les actions?
LOL Je connais quelqu'un va trouver la solution ... de penser que j'ai perdu plusieurs heures sur ce :(Merci, je vais avec cela, il vaut mieux que la mienne. –