2012-02-10 44 views
0

我有这个简化实施和下面的单元测试:如何用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(); 
    } 
} 

如何测试与犀牛嘲笑GetParentsValue()方法没有实现父母的GetSomeValue()方法?

谢谢!

回答

1

你可以这样做:

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

我在intitializing mockParent上失败了。我没有使用存根。 – maestro 2012-02-10 14:17:01

1

您可以使用此代码:如果你想测试GetParentsValue()方法的一些内部应该嘲笑Parent.GetSomeValue()

Child child = MockRepository.GenerateStrictMock<Child>(); 
child.Stub(c => c.GetParentsValue()).Return(1); 

Assert.AreEqual(1, child.GetParentsValue()); 

Parent mockParent = MockRepository.GenerateStub<Parent>(); 
mockParent.Stub(x => x.GetSomeValue()).Return(1); 

target.MyParent = mockParent; 
相关问题