在 Rhino 模拟中使用基本 Class 类型参数的存根方法

Stubbing Method with Base Class Type Parameter in Rhino Mocks

我正在尝试用基本 class 参数存根模拟,并让它 return 每次调用都具有相同的值。我似乎无法让它正常工作,而且我无法在 Google.

上使用正确的措辞

基本数据结构

public abstract class Base { }

public class BaseImplA : Base { } 
public class BaseImplB : Base { } 

public interface IDoStuff 
{ 
  bool DoStuff(Base b); 
}

实施:

var MockDoStuff = MockRepository.GenerateMock<IDoStuff>();

MockDoStuff.Stub(x => x.DoStuff<Arg<Base>.Is.TypeOf);
           .Return(true);

存根不是 returning true 因为它是 BaseImpl 而不是 Base.

的类型检查

我需要更改什么才能让它接受 Base 而不是为每个 BaseImpl-esque 类型添加存根?

您的示例实现代码中存在语法错误。此外,为了将 Mock 的具体方法设置为 return 值,目标方法必须标记为 Virtual 或 Override。

下面是可以正常工作的代码:

public abstract class Base { }

public class BaseImplA : Base { }
public class BaseImplB : Base { }

public class IDoStuff
{
    public virtual bool DoStuff(Base b)
    {
        return true;
    }
} 

实施

public void TestMethod1()
{
    var mockDoStuff = MockRepository.GenerateMock<IDoStuff>();

    mockDoStuff.Stub(x => x.DoStuff(Arg<Base>.Is.Anything)).Return(true);

    Assert.IsTrue(mockDoStuff.DoStuff(new BaseImplA()));
}