Как смоделировать не реализованный метод с Rhino Mock? - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть эта упрощенная реализация и приведенный ниже модульный тест:

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

Как я могу протестировать метод GetParentsValue () с Rhino Mock без реализации родительского метода GetSomeValue ()?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

Вы можете сделать это:

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 голос
/ 10 февраля 2012

Вы можете использовать этот код:

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