Mam funkcję Chcę mieć Moq. Problem polega na tym, że wymaga 5 parametrów. Framework zawiera tylko Action<T1,T2,T3,T4>
i generycznyMoqa tylko przeciąża Action i cztery generyczne wersje. Czy istnieje elegancki sposób na obejście tego problemu?Moq funkcja z 5+ parametrami i argumentami wywoływania dostępu
To jest to, co chcę zrobić:
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 nie zezwala na to, bo nie ma generic Action że trwa 5+ parametry. Uciekłem, robiąc własny odcinek. Oczywiście, lepiej byłoby użyć Moq z wszystkimi jego weryfikacjami, itp.
Prawdopodobnie nie zamierzam ci pomóc, ale w usłudze .NET 4.0 akcja może zająć do 16 parametrów! –
RichardOD
Nawet jeśli byłeś w .NET 4.0, Moq wciąż obsługuje maksymalnie 4 parametry w swojej najnowszej wersji beta. Aby to naprawić, musisz pobrać źródło i wykonać własne. –
Możesz użyć metody rozszerzenia – Thomas