【发布时间】:2010-09-16 18:31:09
【问题描述】:
我需要对以下类结构进行单元测试:
public interface IFoo
{
int Value { get;}
int GetValue();
}
public class BaseClass : IFoo
{
public virtual int Value { get { return 100; } }
public virtual int GetValue()
{
return Value;
}
}
public class ChildClass : BaseClass, IFoo
{
public override int GetValue()
{
return Value;
}
}
我正在尝试使用 RhinoMocks 测试 ChildClass.GetValue() 方法。
我有以下存根代码:
public ChildClass CreateChildClass(int value)
{
var childClass = MockRepository.GenerateStub<ChildClass>();
childClass.Stub(x => x.Value).Return(value);
return childClass;
}
以及以下 UnitTest 代码:
public IEnumerable<IFoo> CreateList()
{
yield return CreateChildClass(1000);
yield return CreateChildClass(2000);
}
[TestMethod]
public void virtualMethodTest()
{
var list = CreateList();
var query = from p in list
select p.GetValue(); //I can't use p.Value
var sum = query.Sum(p => p);
}
当前的问题是总和始终为零。我可以快速查看列表并从 CreateList() 中查看两个具有正确值的模拟对象。
是否可以对子类的虚方法进行单元测试?还是我需要使用不同的 RhinoMocks 方法?
谢谢
【问题讨论】:
标签: c# linq unit-testing rhino-mocks