繁体   English   中英

如何用Rhino Mock模拟未实现的方法?

[英]How to mock a not implemented method with Rhino Mock?

我有这个简化的实现和下面的单元测试:

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()方法?

谢谢!

你可以这样做:

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);

您可以使用以下代码:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM