代码之家  ›  专栏  ›  技术社区  ›  lomaxx

模拟不是接口的类

  •  7
  • lomaxx  · 技术社区  · 16 年前

    我一直在用C语言编写一些从providerBase类继承的提供程序。我发现很难编写使用提供者的测试,因为大多数模拟框架只允许您模拟接口。

    是否有任何方法可以模拟对继承自ProviderBase的提供程序的调用?

    如果没有,是否有一个模式可以用来实现对提供者的模拟?

    3 回复  |  直到 9 年前
        1
  •  6
  •   cruizer    16 年前

    模拟框架应该能够为您创建一个基于类的模拟对象,只要它有虚拟成员。

    你也可以看看 Typemock

        2
  •  6
  •   Mendelt    16 年前

    我知道Rhino模拟也可以模拟类,大多数其他模拟框架也应该对此没有问题。
    事情也要记住:这门课不能密封。您需要标记要模拟虚拟的方法,并且类需要一个不带参数的构造函数。这是可以保护的,private不起作用。(刚刚试过了)

    记住,模拟框架只会创建一个从类继承的类,并创建一个该类型的对象。因此将调用构造函数。这会导致测试中出现意外行为。

        3
  •  1
  •   Hamish Smith    16 年前

    RhinoMocks Moq 将为类和接口创建双重测试。但类型必须具有虚拟方法或是抽象的。这个 Typemock Isolator解决了这个问题。

    我建议你模仿的对象应该是抽象的( dependency inversion principle )