我有这个简化的实现和下面的单元测试:
public class Parent
{
public virtual int GetSomeValue()
{
throw new NotImplementedException();
}
}
public class Child
{
public Parent MyParent { get; set; }
public virtual Parent GetParent()
{
return MyParent;
}
public virtual int GetParentsValue()
{
var parent = GetParent();
return parent.GetSomeValue();
}
}
如何在不实现父级的GetSomeValue()方法的情况下使用Rhino Mock测试GetParentsValue()方法?
谢谢!
答案 0 :(得分:2)
你可以这样做:
Child target = new Child();
Parent mockParent = MockRepository.GenerateStub<Parent>();
mockParent.Stub(x => x.GetSomeValue()).Return(1);
target.MyParent = mockParent;
int value = target.GetParentsValue();
Assert.AreEqual(value, 1);
答案 1 :(得分:1)
您可以使用此代码:
Child child = MockRepository.GenerateStrictMock<Child>();
child.Stub(c => c.GetParentsValue()).Return(1);
Assert.AreEqual(1, child.GetParentsValue());
如果你想测试GetParentsValue()方法的一些内部结构,你应该使用以下方法模拟Parent.GetSomeValue()
:
Parent mockParent = MockRepository.GenerateStub<Parent>();
mockParent.Stub(x => x.GetSomeValue()).Return(1);
target.MyParent = mockParent;