如何模仿一切?

时间:2010-09-09 21:14:09

标签: c# .net mocking typemock

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

2 个答案:

答案 0 :(得分:8)

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

Quote

  

Typemock Isolator使用了   面向方面的编程设计   这创造了一个模拟方面。   在内部,它使用.NET Framework   用于监控的分析器API   应用程序的执行。当一个方法   由CLR,Typemock加载   Isolator检索IL并替换   它与仪表化的IL代码。 Typemock   隔离器不会改变您的原件   IL代码,它只是插入新代码   调用Typemock隔离器   框架并返回模拟值。

答案 1 :(得分:0)

模拟一切都是模拟框架的功能之一。模拟一切都是为了模拟课堂上的所有内容,例如

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

JustMock& TypeMock都提供此功能。

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

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