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());