C# NSSubstitute-伪造调用另一个虚拟方法的虚拟方法
我有一个类似这样的类:C# NSSubstitute-伪造调用另一个虚拟方法的虚拟方法,c#,unit-testing,nsubstitute,C#,Unit Testing,Nsubstitute,我有一个类似这样的类: public class MyClass { public virtual bool A() { return 5 < B(); } protected virtual int B() { return new Random.Next(1, 10); } } 然而,这不起作用。我得到一个运行时异常: NSSubstitute.Exceptions.CouldNotSetReturns
public class MyClass
{
public virtual bool A()
{
return 5 < B();
}
protected virtual int B()
{
return new Random.Next(1, 10);
}
}
然而,这不起作用。我得到一个运行时异常:
NSSubstitute.Exceptions.CouldNotSetReturns由于类型不匹配异常
无法为MyClass.A返回布尔类型的值(应为int类型)
有没有办法解决这个问题,或者我必须创建一个覆盖
a
的具体测试双类?我通过修改测试代码解决了这个问题,如下所示:
var o = Substitute.ForPartsOf<MyClass>();
o.When(x => x.A()).DoNotCallBase();
o.A().Returns(true);
Assert.True(o.DoSomethingElse());
var o=Substitute.ForPartsOf();
o、 当(x=>x.A()).DoNotCallBase()时;
o、 A()返回(true);
True(o.DoSomethingElse());
这可以防止fake在下面的Returns()
调用中调用实际实现
var o = Substitute.ForPartsOf<MyClass>();
o.When(x => x.A()).DoNotCallBase();
o.A().Returns(true);
Assert.True(o.DoSomethingElse());