如何模仿一切?

我理解如何模拟接口或虚方法调用。 但像TypeMock这样的框架可以模拟框架中的所有内容。 哪些.NET机制用于提供此类function?

例如,Typemock Isolator使用CLR 分析器API来拦截.NET调用并在运行时更改它们:

Quote :

Typemock Isolator使用面向方面的编程设计来创建模拟方面。 在内部,它使用.NET Framework Profiler API来监视应用程序的执行。 当CLR加载方法时,Typemock Isolator将检索IL并将其替换为已检测的IL代码。 Typemock Isolator不会更改您的原始IL代码,它只是插入调用Typemock Isolator框架的新代码并返回模拟值。

模拟一切都是模拟框架的function之一。 模拟一切都是为了模拟一个类中的所有内容,例如

  • 模拟依赖对象
  • 非虚方法
  • 密封课程
  • 静态方法
  • 静态类
  • 非公职人员
  • 非公开类型

JustMock和TypeMock都提供此function。

您可以实际查看一些开源模拟框架的源代码,例如Moq框架,Easy Mock,Rhino Mocks等。

披露:请注意,提供的链接是我自己的网站