我正在尝试使用基类参数存根模拟,并让它为每个调用返回相同的值。我似乎无法让它正常工作,我无法在谷歌上得到正确的措辞。
基本数据结构
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);
存根没有返回true,因为它的类型检查是BaseImpl
而不是Base
。
我需要更改什么才能让它接受Base
而不是为我的每个BaseImpl
- esque类型添加存根?
答案 0 :(得分:1)
示例实现代码中存在语法错误。此外,为了设置Mock的具体方法以返回值,必须将目标方法标记为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()));
}