2011-01-08 34 views
5
public interface ICell 
     { 
      int Value{get;} 

      void IncrementValue(); 
     } 

我想在RhinoMocks中爲此接口創建存根。 我有一個只讀屬性,我想每次調用IncrementValue()方法時增加他的值。這可能嗎?我不想爲這個存根創建一個新類。存根readOnly屬性的行爲

回答

3

我有類似的建議,傑伊,只是更短。不知道這是否有一些缺點。

int count = 0; 

    var mock = MockRepository.GenerateStub<ICell>(); 
    mock.Stub(p => p.Value).WhenCalled(a => a.ReturnValue = count).Return(42); 
    mock.Stub(p => p.IncrementValue()).WhenCalled(a => { 
     count = (int)count+1; 
    }); 

回報(42)放在那裏說「值,則返回的時候,不要扔」和WhenCalled(A => a.ReturnValue =計數)返回淡水河谷42與計的電流值覆蓋。

0

當函數被調用時,您可以給Rhino模擬一個lambda運行。這個lambda可以增加一個計數器。你可以找到一個例子here

+0

我猜馬丁的問題,更好地是什麼增加...接口只有一個get屬性,沒有設置 – 2011-01-08 02:56:43

0

我想出了這個太:

cell.Stub(c => c.Value).WhenCalled(m => m.ReturnValue = cell.GetArgumentsForCallsMadeOn(c => c.IncrementValue()).Count).Return(0); 

你的幫助,我是WhenCalled方法的行爲混淆之前...但我認爲你的做法是一個比這

相關問題