Как все издеваться? - PullRequest
       13

Как все издеваться?

7 голосов
/ 10 сентября 2010

Я понимаю, как имитировать интерфейсы или вызовы виртуальных методов. Но фреймворки, такие как TypeMock, могут имитировать все в фреймворке. Какие механизмы .NET используются для предоставления таких функций?

Ответы [ 2 ]

8 голосов
/ 10 сентября 2010

Typemock Isolator, например, использует CLR профилировщик API для перехвата вызовов .NET и изменения их во время выполнения:

Цитата

Typemock Isolator использует аспектно-ориентированное программирование это создает фиктивный аспект. Внутренне он использует .NET Framework API профилировщика для мониторинга выполнение приложения. Когда метод загружается CLR, Typemock Изолятор извлекает IL и заменяет это с помощью инструментированного кода IL. Typemock Изолятор не меняет ваш оригинал IL код, он просто вставляет новый код который вызывает изолятор Typemock рамки и возвращает ложные значения.

0 голосов
/ 09 октября 2013

Mock Все это одна из особенностей фреймворков Mock. Короче говоря, издеваться над всем - это смеяться над всем в классе, например

  • макет зависимых объектов
  • не виртуальные методы
  • закрытые уроки
  • статические методы
  • статические классы
  • непубличные участники
  • непубличные типы

JustMock & TypeMock оба предоставляют эту функцию.

Вы можете посмотреть исходный код некоторых фреймворков с открытым исходным кодом, таких как Moq, Easy Mock, Rhino Mocks и т. Д.

Раскрытие информации: обратите внимание, что приведенная ссылка принадлежит моему собственному веб-сайту

...