模拟无接口类

Afs*_*bbi 2 c# rhino-mocks mocking

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

public class MyClass
{
    void method1()
    {
        //some code goes here
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Bri*_*sio 5

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

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