Как издеваться над всем подряд?
Вопрос
Я понимаю, как имитировать интерфейсы или вызовы виртуальных методов.Но фреймворки, такие как 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 и т.д.
Раскрытие информации:Пожалуйста, обратите внимание, что предоставленная ссылка относится к моему собственному веб-сайту