使用 NSubstitute 防止调用基础 class 构造函数
Prevent call to base class constructor using NSubstitute
考虑这种我无法控制的类型:
public class Foo : FooBase {
public Foo(IBar bar)
: base(bar) { // <---- here's the problem
}
// other stuff...
}
我能做到:Substitute.ForPartsOf<Foo>(Substitute.For<IBar>())
。但它调用基础 class' 构造函数,所以一切都坏了。
我想我可以使用一些 DoNotCallBase
魔法或类似的东西,但找不到方法。
有什么技巧可以处理这种情况吗?
不,DoNotCallBase
模拟仅适用于虚拟成员,不适用于构造函数。构造函数必须调用基本 class 构造函数之一,这是 .NET Framework 严格要求的。据我所知,没有模拟框架可以解决这个问题。
但是调用base有什么问题class?您使用接口 Mock,因此如果对 IBar 有正确的期望,一切都应该有效。
考虑这种我无法控制的类型:
public class Foo : FooBase {
public Foo(IBar bar)
: base(bar) { // <---- here's the problem
}
// other stuff...
}
我能做到:Substitute.ForPartsOf<Foo>(Substitute.For<IBar>())
。但它调用基础 class' 构造函数,所以一切都坏了。
我想我可以使用一些 DoNotCallBase
魔法或类似的东西,但找不到方法。
有什么技巧可以处理这种情况吗?
不,DoNotCallBase
模拟仅适用于虚拟成员,不适用于构造函数。构造函数必须调用基本 class 构造函数之一,这是 .NET Framework 严格要求的。据我所知,没有模拟框架可以解决这个问题。
但是调用base有什么问题class?您使用接口 Mock,因此如果对 IBar 有正确的期望,一切都应该有效。