【问题标题】:How do you prevent the base class constructor from being called with Moq?如何防止使用 Moq 调用基类构造函数?
【发布时间】:2012-05-18 15:25:04
【问题描述】:

如何防止基类构造函数被 Moq 调用?

我无法使用 Moq 模拟对象,因为正在调用基类构造函数并且它需要真实对象,所以我想停止调用基类构造函数。

var parametersMoq = new Mock<MyDerivedClass>(null, "Params", null){ CallBase = false, };
_storedProcedureAccessor._parameters = parametersMoq.Object;

MyDerivedClass 的基类构造函数给我带来了问题。

【问题讨论】:

  • 你对基类有控制权吗?基类和派生类的构造函数签名是什么?

标签: c# unit-testing moq


【解决方案1】:

没有办法阻止基类构造函数被调用。

如果您可以编辑基类,则应使用抽象(例如接口、抽象类或委托)替换固定依赖项。

如果您无法编辑基类,并且您确实需要能够用测试友好的假货替换依赖项来编写您的单元测试,那么您需要做更多的工作(例如,将有问题的基类包装在一个抽象,然后使用组合而不是继承,并依赖于新的抽象)。

【讨论】:

    猜你喜欢
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2010-09-14
    • 2016-07-19
    • 1970-01-01
    • 2016-08-04
    相关资源
    最近更新 更多