Ho una funzione che desidero Moq. Il problema è che ci vogliono 5 parametri. Il framework contiene solo Action<T1,T2,T3,T4>
e il generico di Moq CallBack()
solo overload Action e le quattro versioni generiche. C'è una soluzione elegante per questo?Moq una funzione con 5+ parametri e argomenti di chiamata di accesso
Questo è quello che voglio fare:
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
);
Moq non permette questo, perché non v'è alcuna azione generico che prende 5+ parametri. Ho fatto ricorso al mio stub. Ovviamente, sarebbe meglio usare Moq con tutte le sue verifiche, ecc.
Probabilmente non ti aiuterà, ma in .NET 4.0 L'azione può richiedere fino a 16 parametri! –
RichardOD
Anche se si era in .NET 4.0, Moq supporta ancora solo un massimo di 4 parametri nella sua ultima versione beta. Per risolverlo, dovresti scaricare il codice sorgente e caricare il tuo. –
È possibile utilizzare un metodo di estensione – Thomas