Как «Typemock Isolator» высмеивает статические методы? - PullRequest
10 голосов
/ 08 июля 2010

Как некоторые из вас знают, как правило, невозможно смоделировать статический метод в .net.

Под издевательством я имею в виду заменить метод в классе другим методом с такой же сигнатурой,обычно для целей тестирования.

Два основных метода, используемых для насмешки метода, - объявить его виртуальным или определить его в интерфейсе.Ни один из этих двух методов не разрешен для статических методов .net.

Однако существует дорогостоящий инструмент под названием «Typemock Isolator», который позволяет имитировать статические методы.Как Isolator совершает этот, казалось бы, невозможный подвиг?

1 Ответ

9 голосов
/ 08 июля 2010

Это в FAQ .

По сути, фальшивка Typemock создает новый объект исходного типа и перехватывает каждый вызов метода и свойства для этого объекта, перенаправляя вызов на фальшивку и возвращая указанные вами значения. Для этого он использует глубокое вуду в .NET Framework ( .NET Profiler API , если вам интересно), но все это «законно». Технически любой может создать дубликат Typemock, но я еще не видел его.

...