2009-07-22 6 views
-1

Ich habe einige Produktionscode wieWie GetType() -Methode in NMock

private bool IsTypeEqual(object theFirstObject, object theSecondObject) 
{ 
     if(theFirstObject.GetType()==theSecondObject.GetType()) 
     { 
       return true; 
     } 
     else 
     { 
       return false; 
     } 
} 

Jetzt muss ich schreiben das Gerät Testfall für diesen Code zu verspotten. Ich verwende NMock, um das Objekt zu erstellen. Wenn ich also das Objekt von zwei verschiedenen Klassen passiere, sollte es zum anderen Teil gehen. Aber eigentlich spottet ich beide Objekte, also gibt GetType() den MockObject-Typ für beide Objekte zurück. Wie kann ich dieses Problem lösen?

+2

Dieses nichts mit der Frage zu tun hat, warum Sie gerade nicht ein tun return (theFirstObject.GetType() == theSecondObject.GetType()) –

+0

Sie können ein "Objekt" nicht vortäuschen. Es ist keine Schnittstelle oder eine abstrakte Klasse. – Liam

Antwort

-1

Ich hoffe, dieser Code wird Ihnen helfen.

private bool IsTypeEqual<TMockedType>(object theFirstObject, object theSecondObject) 
{ 
    Matcher matcher = Is.TypeOf(typeof(TMockedType)); 

    return matcher.Matches(theFirstObject) && matcher.Matches(theSecondObject); 
}
0

Sie müssen nicht "theFirstObject" oder "theSecondObject" vortäuschen. Es ist dir wirklich egal, was mit diesen Klassen passiert, du musst nur bestätigen, dass das Ergebnis korrekt ist.

Wenn ich Sie wäre, würde ich in andere Art passieren und geltend zu machen, ob es wahr ist/false:

Assert.AreEqual(false, IsTypeEqual("HelloWorld", 192)); 

Assert.AreEqual(true, IsTypeEqual("Hello", "World")); 
Verwandte Themen