2009-06-09 15 views
4

Gibt es eine Möglichkeit, meine Mocks dazu zu bringen, einen Typ anzunehmen? Ich versuche, so etwas zu tun:Verspottung des Is-Operators in Moq

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

jedoch GetType nicht überschreibbar ist.

Irgendwelche Vorschläge?

Antwort

7

Statt die is Betreibern der Verwendung von Typen zu überprüfen, Sie konnte (nicht soll), um Ihre eigene overridable Interface-Methode implementieren, die eine ähnliche Funktion ausführt, und setzt es mit dem is Operator (oder typeof()/GetType()) auf Ihrem üblichen Haufen Klassen.

Das heißt, wenn Sie den is-Operator in einer Weise verwenden, die so überprüfbar sein muss, ist es wahrscheinlich, dass Sie im Grunde den Zweck von Polymorphismus und Schnittstellen irgendwo entlang der Linie besiegen. Ich würde darüber nachdenken, ob ich es einfach loswerden könnte.

3

Ich weiß, dass dies eine alte Post, aber ich war für eine Lösung für dieses Problem gesucht ...

Mit Moq ist es möglich, das Standard-GetType Signatur an Schnittstelle hinzuzufügen, so dass Moq die Methode verspotten , ohne dass Sie mehr Code schreiben müssen, da die Methode bereits für Sie implementiert ist.

Type GetType();