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

lea*_*tes 5 c# unit-testing moq

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

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

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

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

Ale*_*eck 5

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

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

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