2016-07-13 33 views
0

WhenCalled在各處都有很好的記錄&我不打算爲什麼我使用它,但我不能讓它工作在就像我在主題中看到的每一篇文章都詳細描述了一樣。Rhino Mocks WhenCalled - 委託'System.Action'不需要1個參數

基本上你應該能夠做這樣的事情:

mock.Expect(x => x. SingleOrDefault(null)) 
    .IgnoreArguments() 
    .WhenCalled(invocation => ((Action)invocation.Arguments[0]).Invoke()); 

但這並不編譯,我 - 我只是得到一個錯誤說委託「System.Action」不拿1個參數。

我正在使用V4.0的Rhino Mocks - 是否已更改此方法?我想使用 WhenCalled來獲取傳遞給SingleOrDefault的參數(本例中爲lambda表達式)。

回答

1

所有回答這個博客帖子:

Rhino Mocks 4.0.0

此前,WhenCalled允許你執行奪走了行動,作爲一個參數,數據結構封裝方法調用。由於正在調用Action,所以期望的返回值不能改變。 在當前版本中,WhenCalled已稍加修改可以簡單地執行動作

爲了提供類似的特徵,因爲原來的「WhenCalled」,一種新的方法「截取」已經被加入其中期望採取動作,作爲一個單一的參數,數據結構包封方法調用

TL; DR:使用截取代替WhenCalled