11

正如你们中的一些人所知道的,在 .net 中模拟静态方法通常是不可能的。

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

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

然而,有一个昂贵的工具叫做“Typemock Isolator”,它允许模拟静态方法。Isolator 如何完成这个看似不可能的壮举?

4

1 回答 1

10

它在常见问题解答中。

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

于 2010-07-08T19:12:23.423 回答