在 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()));
}
我正在尝试用基本 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()));
}