有没有一个工具可以用来为c#中的对象模拟生成接口和包装器

时间:2010-04-20 02:41:06

标签: c# mocking

给定一个类,如System.Timers.Timer,或任何托管类(无论是用户定义的,来自.net框架,还是某些第三方库),我可以使用一些程序(a)生成基于的接口这个类和(b)为给定的类生成一个包装器?

例如,如果我有

public class Foo
{
   public object MyProperty { get { ... } set { ... } }
   public int SomeMethod(object a) { ... }
}

它将创建一个界面

interface IFoo
{
   object MyProperty { get; set; }
   int SomeMethod(object a) { ... } 
}

甚至可能是一个包装

class FooWrap
{
   // something for relay constructor here
   ...

   Foo _me;

   public object MyProperty { get { return _me.MyProperty; } set { _me.MyProperty =    value; } }
   public int SomeMethod(object a) { return _me.SomeMethod(); }
}

显然有些东西我没想过像事件,仿制品等。我想要一个DWIMNWIS-PSICHTO(-Plus-Stuff-I-Clearly-Haven't-Thought-Of)。

我知道resharper / vs可以用来提取接口,但我只能在我自己的类上使用它。

除此之外:哇,令人惊讶的是,如何简单地习惯于以前“不可接受”的想法最终使其合法化。一年前,必须为我想要模拟和采用注入框架的所有对象创建接口的想法似乎是疯狂的高度。事实证明,虽然它不是死亡和税收,但却是斯巴达。

我知道并使用过typemock。这当然是精灵巫师的作品。有一天,800美元看起来不是那么多钱,我打算买它。

2 个答案:

答案 0 :(得分:0)

我听到有关rhino mock的好消息 还有nmock

很抱歉,但我没有太多关于他们的额外信息。请在书中阅读一下这些内容。

答案 1 :(得分:0)

我建议您创建自己的界面并仅实现所需的界面。类似于方法的类似方法是邪恶的,只应在遗留代码上使用,直到它被重构为止。