À l'aide de Moq pour se Moquer un Func<> paramètre du constructeur et Vérifier qu'il a été appelé deux fois

Pris la question à partir de cet article (Comment moq un Func) et adapté comme la réponse n'est pas correcte.

public class FooBar
{
    private Func<IFooBarProxy> __fooBarProxyFactory;

    public FooBar(Func<IFooBarProxy> fooBarProxyFactory)
    {
        _fooBarProxyFactory = fooBarProxyFactory;
    }

    public void Process() 
    {
        _fooBarProxyFactory();
        _fooBarProxyFactory();
    }
}

J'ai besoin de simuler une touche Func<> qui est passé en paramètre du constructeur, l'assertion que la touche func était d'appeler deux fois.

En essayant de se moquer de la fonction var funcMock = new Mock<Func<IFooBarProxy>>(); Moq pose et d'exception comme la touche Func type n'est pas mockable.

Le problème est que, sans se moquer de la touche func il n'est pas possible de vérifier que la touche func a été appelé (n) fois. funcMock.Verify( (), Times.AtLeast(2));

  • Moq prend désormais en charge ce que l'OP a été à l'origine d'essayer de faire, à voir la réponse de @ktam33