Die Frage aus diesem Artikel (How to moq a Func) genommen und angepasst, da die Antwort nicht korrekt ist.Verwenden von Moq, um einen Func <> Konstruktorparameter zu verspotten und zu überprüfen, dass es zweimal aufgerufen wurde
public class FooBar
{
private Func<IFooBarProxy> __fooBarProxyFactory;
public FooBar(Func<IFooBarProxy> fooBarProxyFactory)
{
_fooBarProxyFactory = fooBarProxyFactory;
}
public void Process()
{
_fooBarProxyFactory();
_fooBarProxyFactory();
}
}
Ich habe eine Notwendigkeit, eine Func <> zu verspotten, die als Konstruktor Parameter übergeben wird, die behaupten, dass die func Anruf zweimal war.
Beim Versuch, die Funktion var funcMock = new Mock<Func<IFooBarProxy>>();
Mock raised und Ausnahme als der Func-Typ ist nicht vorstellbar.
Das Problem ist, dass ohne zu spotten die Funktion ist es nicht möglich zu überprüfen, dass die Funktion wurde (n) mal aufgerufen. funcMock.Verify((), Times.AtLeast(2));
Moq unterstützt jetzt, was das OP ursprünglich versuchte zu tun, siehe die Antwort von @ ktam33 – Mike