2012-02-10 85 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; 
相關問題