2010-07-08 16 views
9

Como algunos de ustedes sabrán, generalmente no es posible simular un método estático en .net.¿Cómo se burlan los métodos estáticos de "Typemock Isolator"?

Al burlarse, me refiero a reemplazar un método en una clase con otro método con la misma firma, generalmente con fines de prueba.

Los dos métodos principales utilizados para burlar un método son declararlo virtual o definirlo en una interfaz. Ninguno de estos dos está permitido para los métodos estáticos de .net.

Sin embargo, existe una herramienta costosa llamada "Typemock Isolator" que permite la burla de métodos estáticos. ¿Cómo logra Isolator esta hazaña aparentemente imposible?

Respuesta

8

Está en el FAQ.

Básicamente, un falso modelo crea una instancia de un nuevo objeto del tipo original y se engancha en todos y cada uno de los métodos y llamadas de propiedad para ese objeto, redirigiendo la llamada al falso y devolviendo los valores que especifique. Utiliza algo de vudú profundo en .NET Framework (.NET Profiler API, si estás interesado) para hacer esto, pero es todo "legítimo". Técnicamente cualquiera puede construir un duplicado de Typemock, pero aún no he visto ninguno.

+0

Dice en el sitio web, "Typemock Isolator utiliza tecnología orientada a aspectos para redirigir llamadas desde el código real. Esto permite a los desarrolladores definir el comportamiento del componente externo requerido para un escenario probado". Esperaba poder saber más acerca de cómo sucede eso. He oído hablar de herramientas orientadas a aspectos como "post compilador" como PostSharp. –

+0

@Rising Star: Lo siento, he editado para agregar más información. PostSharp realmente modifica el código compilado. Typemock usa la API de .NET Profiler para interceptar realmente llamadas de método * cuando se las llama * y redirigirlas a la falsificación. – Randolpho

+0

ACEPTADO: .net profiler api. ¿Dice en otro lugar en su página web que usan la aplicación de perfil .net, o lo conocen de otra manera? –

Cuestiones relacionadas