Compte tenu de l'interface suivante:
public interface IFoo
{
bool Foo(string a, bool b = false);
}
Tentative de se moquer en utilisant Moq:
var mock = new Mock<IFoo>();
mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false);
donne l'erreur suivante au moment de la compilation:
Une arborescence d'expression ne peut pas contenir un appel ou une invocation qui utilise des arguments facultatifs
J'ai trouvé le problème ci-dessus soulevé comme une amélioration dans la liste des problèmes de Moq et il semble être attribué à la version 4.5 (quand c'est le cas).
Ma question est la suivante: que dois-je faire étant donné que ce qui précède ne sera pas corrigé de sitôt? Mes options sont-elles uniquement pour définir explicitement la valeur par défaut du paramètre facultatif à chaque fois que je me moque de lui (ce qui va à l'encontre du point d'en spécifier un en premier lieu) ou pour créer une surcharge sans le booléen (comme ce que j'aurais fait avant C # 4)?
Ou est-ce que quelqu'un a trouvé un moyen plus intelligent de résoudre ce problème?