"Typemock Isolator"如何模拟静态方法?

Dan*_*don 11 .net unit-testing typemock mocking typemock-isolator

正如你们中的一些人所知,通常无法在.net中模拟静态方法.

通过模拟,我的意思是用另一个具有相同签名的方法替换类中的方法,通常用于测试目的.

用于模拟方法的两个主要方法是将其声明为虚拟或在接口中定义它.这两个都不允许使用.net静态方法.

然而,有一种称为"Typemock Isolator"的昂贵工具允许模拟静态方法.Isolator如何完成这个看似不可能的壮举?

Ran*_*pho 10

它在FAQ中.

基本上,Typemock伪实例化原始类型的新对象并挂钩到该对象的每个方法和属性调用,将调用重定向到伪并返回您指定的值.它使用.NET Framework中的一些深层巫术(.NET Profiler API,如果你有兴趣)来做到这一点,但它都是"合法的".从技术上讲,任何人都可以建立一个Typemock的副本,但我还没有看到一个.

  • @Rising Star:它在[FAQ](http://site.typemock.com/typemock-faq/features/how-does-typemock-isolator-work.html)上,我在答案中链接了.`在内部,它使用.NET框架分析器API来监视应用程序的执行.调用方法时,CLR会通知Typemock Isolator; 然后框架可以返回模拟值并完全覆盖原始代码 (2认同)