正如你们中的一些人所知,通常无法在.net中模拟静态方法。
通过模拟,我的意思是用另一个具有相同签名的方法替换类中的方法,通常用于测试目的。
用于模拟方法的两个主要方法是将其声明为虚拟或在接口中定义它。这两个都不允许使用.net静态方法。
然而,有一种名为“Typemock Isolator”的昂贵工具允许模拟静态方法。 Isolator如何完成这项看似不可能的壮举?
答案 0 :(得分:9)
它位于FAQ。
基本上,Typemock伪实例化原始类型的新对象并挂钩到该对象的每个方法和属性调用,将调用重定向到伪并返回您指定的值。它在.NET Framework中使用了一些深层伏都教(.NET Profiler API,如果你有兴趣的话)这样做,但它都是“合法的”。从技术上讲,任何人都可以建立一个Typemock的副本,但我还没有看到一个。