我有一个函数,我想要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