Mit Moq, zu Verhöhnen, als eine Func - <> Konstruktor-parameter und Überprüfen Sie es zweimal genannt wurde

Genommen die Frage aus diesem Artikel (Wie moq eine Func) und passte es wie die Antwort ist nicht korrekt.

public class FooBar
{
    private Func<IFooBarProxy> __fooBarProxyFactory;

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

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

Ich habe ein Bedürfnis, zu verhöhnen, als eine Func - <> übergeben wird als parameter des Konstruktors, die behaupten, dass die func war zweimal rufen.

Wenn Sie versuchen, zu verspotten die Funktion var funcMock = new Mock<Func<IFooBarProxy>>(); Moq wirft und Ausnahme, wie Sie die Func-Typ ist nicht mockable.

Das Problem ist, dass ohne Sie verspotten die func ist es nicht möglich zu überprüfen, ob die func aufgerufen wurde (n) Zeit. funcMock.Verify( (), Times.AtLeast(2));

  • Moq unterstützt jetzt das, was der OP ursprünglich versucht, zu tun, siehe die Antwort von @ktam33
Schreibe einen Kommentar