代码之家  ›  专栏  ›  技术社区  ›  Afshar Mohebi

模拟无接口类

  •  2
  • Afshar Mohebi  · 技术社区  · 14 年前

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

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

    如果答案是真的,为什么存在这样的限制?有什么工作吗?

    3 回复  |  直到 14 年前
        1
  •  5
  •   Brian Genisio    14 年前

    限制存在,因为模拟框架不能改变 method1 没有虚拟或接口。这是一个合理的限制,因为接口允许您分离依赖关系,并且是良好代码IMO的共同特征。不幸的是,大多数.NET框架没有虚拟方法或接口…为了创建接口,需要进行难看的包装。

    如果您真的不喜欢它,那么有一个模拟框架选项可以通过用一些疯狂的魔力foo连接clr来超越限制。那项工作叫做 TypeMock Isolator .

        2
  •  1
  •   Coding Flow    14 年前

    我不知道您将如何模拟一个没有实现接口或具有虚拟方法的类。如果某些代码需要MyClass的实例,而您将其传递给MyDerivedDockClass的实例,则将访问MyClass成员,而不是MyDerivedDockClass成员,因为它们不会被重写虚拟成员。

        3
  •  0
  •   Dmitry S.    14 年前

    打字模型是你最好的选择。

    http://site.typemock.com/