Zrobiłem pytanie z tego artykułu (How to moq a Func) i dostosowałem go, ponieważ odpowiedź jest nieprawidłowa.Używanie Moq do makiety parametru konstruktora <> i sprawdzenie, czy został wywołany dwa razy:
public class FooBar
{
private Func<IFooBarProxy> __fooBarProxyFactory;
public FooBar(Func<IFooBarProxy> fooBarProxyFactory)
{
_fooBarProxyFactory = fooBarProxyFactory;
}
public void Process()
{
_fooBarProxyFactory();
_fooBarProxyFactory();
}
}
Mam potrzebę Mock Func <>, który jest przekazywany jako parametr konstruktorze twierdzą, że func było wywołanie dwukrotnie.
Podczas próby wyśmiewania funkcji var funcMock = new Mock<Func<IFooBarProxy>>();
Moq podnosi się i powoduje wyjątek, ponieważ typ Func nie jest możliwy do wykonania.
Problem polega na tym, że bez szyderstwa func nie można sprawdzić, czy func został wywołany (n) razy. funcMock.Verify((), Times.AtLeast(2));
Moq obsługuje teraz to, co OP próbował pierwotnie zrobić, zobacz odpowiedź z @ ktam33 – Mike