我有一個函數,我想要Moq。問題是它需要5個參數。該框架僅包含Action<T1,T2,T3,T4>
和Moq的通用CallBack()
僅重載Action和四個通用版本。有沒有一個優雅的解決方法呢?Moq有5個參數和訪問調用參數的函數
這就是我想做的事:
public class Filter : IFilter
{
public int Filter(int i1, int i2, int i3, int i4, int i5){return 0;}
}
//Moq code:
var mocker = new Mock<IFilter>();
mocker.Setup(x => x.Filter(
It.IsAny<int>(),
It.IsAny<int>(),
It.IsAny<int>(),
It.IsAny<int>(),
It.IsAny<int>(),
It.IsAny<int>())
.Callback
(
(int i1, int i2, int i3, int i4, int i5) => i1 * 2
);
起訂量不允許這樣,因爲沒有通用的用語,使5+參數。我已經使出自己的存根。顯然,最好是使用Moq及其所有的驗證等。
可能不會幫助你,但在.NET 4.0中動作可能需要多達16個參數! –
RichardOD
2010-03-29 20:20:12
即使您使用的是.NET 4.0,Moq在其最新測試版中仍然只支持最多4個參數。要解決這個問題,你必須下載源代碼並推出自己的源代碼。 – 2010-03-29 20:26:40
您可以使用擴展方法 – Thomas 2011-04-25 20:20:35