Frage

Ich bin ein begeisterter Nutzer von RhinoMocks von einer TDD-Entwicklung und AAA-Perspektive mit NUnit und ReSharper. Ich ändere Arbeitsplätze und das Team, das ich bewegt bin zu verwendet TypeMock so möchte ich den Boden ausgeführt ... und ich habe auf ein Problem stoßen. Wie kann ich die Argumente für eine aufgerufene Methode auf einem Mock-Objekt zu bekommen. Wenn RhinoMocks mit benutze ich:

mockObject.GetArgumentsForCallsMadeOn(x => x.MethodIWantToGetParametersFrom(null))

, die eine IList vom Typ Objektarray zurückgibt. Toll! Ich gehe und bekommen, was ich will und es verarbeiten, wie ich will. Jetzt mit der AAA-Syntax von TypeMock ich kann nicht einen Weg zu erarbeiten, scheinen dies zu tun ... Könnte jemand etwas Licht in diese Schuppen bitte? Soll ich es anders machen?

Danke fürs Lesen und ich freuen uns auf Ihre Antworten!

Adam

War es hilfreich?

Lösung

Sie verwenden können DoInstead ():

Isolate.WhenCalled(()=>x.MethodIWantToGetParametersFrom).DoInstead(context => Console.WriteLine(context.Parameters[0].ToString())

Sie erhalten einen Context Objekt, das die param Werte enthält.

Sie können auch eine Methode mit dem gleichen Namen auf Ihrer eigene Klasse implementieren, und Swap-Anrufe von dem gefälschten Objekt zu dieser Methode:

 class MyOwnClass
    {
    void MethodIWantTOGetParametersFrom(string s){
Console.WriteLine(s);
} //this is NOT the real method
    }

    //in test:
    MyOwnClass own = new MyOwnClass();
    Isolate.Swap.CallsOn(realClassInstance).WithCallsTo(own); //only methods that are implemented in the OwnCalss will be redirected. others will be called on the original instance.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top