Вопрос

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

Это было полезно?

Решение

ISEMOCK Isolator, например, использует CLR Profiler API Чтобы перехватить .NET вызовы и измените их во время выполнения:

Цитировать:

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

Другие советы

Mock Everything - это одна из функций макетных фреймворков.Короче говоря, высмеивать все - это высмеивать все в классе, например

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

Просто Мок & Типовой блок оба варианта предоставляют эту функцию.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top