preso la questione da questo articolo (How to moq a Func) e adattato come la risposta non è corretta.Utilizzando Moq per deridere un parametro del costruttore Func <> e Verifica è stato chiamato due volte
public class FooBar
{
private Func<IFooBarProxy> __fooBarProxyFactory;
public FooBar(Func<IFooBarProxy> fooBarProxyFactory)
{
_fooBarProxyFactory = fooBarProxyFactory;
}
public void Process()
{
_fooBarProxyFactory();
_fooBarProxyFactory();
}
}
Ho un bisogno di prendere in giro un Func <> che viene passato come parametro del costruttore, l'asserzione che il func era chiamata due volte.
Quando si tenta di simulare la funzione var funcMock = new Mock<Func<IFooBarProxy>>();
Moq genera ed eccezione in quanto il tipo Func non è mockable.
Il problema è che senza il mocking della funzione non è possibile verificare che la funzione sia stata chiamata (n) volte. funcMock.Verify((), Times.AtLeast(2));
Moq ora supporta ciò che l'OP stava originariamente cercando di fare, vedere la risposta da @ ktam33 – Mike