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

有帮助吗?

解决方案

例如,打字机隔离器使用CLR Profiler API 在运行时拦截.NET调用并更改它们:

引用:

Typemock隔离器使用以方面为导向的编程设计,该设计创建模拟方面。在内部,它使用.NET Framework Profiler API监视应用程序的执行。当通过CLR加载方法时,Typemock隔离器会检索IL并用仪器的IL代码替换。打字机隔离器不会更改您的原始IL代码,它只是插入调用Typemock隔离器框架并返回模拟值的新代码。

其他提示

模拟所有内容是模拟框架的功能之一。简而言之

  • 模拟依赖对象
  • 非虚拟方法
  • 密封的课程
  • 静态方法
  • 静态课程
  • 非公共成员
  • 非公共类型

JustMock & 打字机 两者都提供此功能。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top