2010-07-08 9 views
9

Come alcuni di voi sapranno, in genere non è possibile simulare un metodo statico in .net.In che modo "Typemock Isolator" simula i metodi statici?

Per mocking, intendo sostituire un metodo in una classe con un altro metodo con la stessa firma, solitamente a scopo di test.

I due metodi principali utilizzati per la simulazione di un metodo sono dichiararlo virtuale o definirlo in un'interfaccia. Nessuno di questi due è consentito per i metodi statici .net.

Tuttavia, esiste uno strumento costoso chiamato "Typemock Isolator" che consente di simulare metodi statici. In che modo Isolator riesce a realizzare questa prodezza apparentemente impossibile?

risposta

8

È nello FAQ.

Fondamentalmente, un falso Typemock crea un'istanza di un nuovo oggetto del tipo originale e si aggancia a ogni singolo metodo e chiamata di proprietà per quell'oggetto, reindirizzando la chiamata al falso e restituendo i valori specificati. Utilizza alcuni deep voodoo in .NET Framework (lo .NET Profiler API, se sei interessato) per farlo, ma è tutto "legittimo". Tecnicamente chiunque può creare un duplicato di Typemock, ma devo ancora vederne uno.

+0

Nel sito Web, "Typemock Isolator utilizza la tecnologia orientata all'aspetto per reindirizzare le chiamate dal codice reale, consentendo agli sviluppatori di definire il comportamento del componente esterno richiesto per uno scenario testato." Speravo di essere in grado di sapere di più su come ciò accada. Ho sentito parlare di strumenti "post-compilatore" orientati agli aspetti come PostSharp. –

+0

@Rising Star: Siamo spiacenti, ho modificato per aggiungere ulteriori informazioni. PostSharp modifica effettivamente il codice compilato. Typemock utilizza l'API .NET Profiler per intercettare effettivamente le chiamate di metodo * come vengono chiamate * e reindirle al falso. – Randolpho

+0

ACCETTATO: .net profiler api. Dice da qualche altra parte sulla loro pagina web che usano .net profiler api, o conosci in qualche altro modo? –