模拟无接口类

时间:2010-07-19 19:33:04

标签: c# mocking rhino-mocks

一般来说,模拟框架和特定的Rhino模拟只能模拟具有虚方法的接口和类是真的吗?例如,我可以模拟以下简单的类:

public class MyClass
{
    void method1()
    {
        //some code goes here
    }
}

如果答案是真的,为什么存在这样的限制?有没有解决办法?

3 个答案:

答案 0 :(得分:5)

存在限制,因为模拟框架在没有虚拟或接口的情况下无法更改method1。这是一个合理的限制,因为接口允许您解耦依赖关系,并且是良好代码的共同特征,IMO。不幸的是,大多数.Net框架都没有虚拟方法或接口......这需要丑陋的包装才能创建接口。

如果你真的不喜欢它,那里有一个模拟框架选项,通过用一些疯狂的魔法foo挂钩CLR来超越限制。这个名称叫做TypeMock Isolator

答案 1 :(得分:1)

我不确定如何模拟没有实现接口或具有虚拟方法的类。如果某些代码期望MyClass的实例并且您传递了MyDerivedMockClass的实例,那么将访问MyClass成员而不是MyDerivedMockClass成员,因为它们不是被重写的虚拟成员。

答案 2 :(得分:0)

Typemock是你最好的选择。

http://site.typemock.com/