2009-06-09 6 views
4

Existe-t-il un moyen de faire en sorte que mes simulateurs usurpent l'identité d'un type? Je suis en train de faire quelque chose comme ceci:Se moquer de l'opérateur est dans Moq

var myMock = new Mock<IMyType>(); 
myMock.Setup(x => x.GetType()).Returns(typeof(MyTypeImpl)); 

cependant GetType Impossible de remplacer.

Des suggestions?

Répondre

7

Au lieu d'utiliser l'opérateur is pour vérifier les types, vous pourrait (non devrait) mettre en œuvre votre propre méthode d'interface Overridable qui exécute une fonction similaire, et la mettre en œuvre avec l'opérateur is (ou typeof()/GetType()) sur votre bande habituelle Des classes. Cela dit, si vous utilisez l'opérateur is d'une manière qui doit être testable comme ceci, il est plus probable qu'autrement que vous vaincre le but du polymorphisme et des interfaces quelque part le long de la ligne. Je pensais à savoir si je pouvais m'en débarrasser.

3

Je sais que c'est un ancien poste, mais je cherchais une solution à cette question ...

En utilisant Moq il est possible d'ajouter la signature standard GetType à votre interface, ce qui permet Moq de se moquer de la méthode , sans avoir besoin d'écrire plus de code car la méthode est déjà implémentée pour vous.

Type GetType(); 
Questions connexes