Ottenere argomenti di un metodo deriso Typemock chiamato
-
20-08-2019 - |
Domanda
Sono un appassionato utente di RhinoMocks che sviluppa da una prospettiva TDD e AAA con NUnit e ReSharper. Sto cambiando lavoro e il team a cui mi sto trasferendo usa TypeMock, quindi voglio andare a terra correndo ... e ho riscontrato un problema. Come posso ottenere gli argomenti per un metodo chiamato su un oggetto simulato. Quando utilizzo RhinoMocks, utilizzo:
mockObject.GetArgumentsForCallsMadeOn(x => x.MethodIWantToGetParametersFrom(null))
Che restituisce una IList di tipo array di oggetti. Grande! Vado a prendere quello che voglio e lo elaboro come desidero. Ora usando la sintassi AAA di TypeMock non riesco a trovare un modo per farlo ... Qualcuno potrebbe far luce su questo per favore? Dovrei farlo diversamente?
Grazie per aver letto e non vedo l'ora di avere le tue risposte!
Adam
Soluzione
puoi usare DoInstead ():
Isolate.WhenCalled(()=>x.MethodIWantToGetParametersFrom).DoInstead(context => Console.WriteLine(context.Parameters[0].ToString())
Ottieni un oggetto Context che contiene i valori param.
puoi anche implementare un metodo con lo stesso nome sulla tua classe e scambiare chiamate dall'oggetto contraffatto a quel metodo:
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.