Spöttische Erweiterung Methoden mit Moq

Habe ich eine bereits vorhandene Schnittstelle...

public interface ISomeInterface
{
    void SomeMethod();
}

und ich habe verlängert intreface mit einem mixin...

public static class SomeInterfaceExtensions
{
    public static void AnotherMethod(this ISomeInterface someInterface)
    {
        //Implementation here
    }
}

Habe ich eine Klasse, das ist Berufung, die ich testen will...

public class Caller
{
    private readonly ISomeInterface someInterface;

    public Caller(ISomeInterface someInterface)
    {
        this.someInterface = someInterface;
    }

    public void Main()
    {
        someInterface.AnotherMethod();
    }
}

und einem test, bei dem möchte ich verspotte die Schnittstelle, und überprüfen Sie den Aufruf der extension-Methode...

    [Test]
    public void Main_BasicCall_CallsAnotherMethod()
    {
        //Arrange
        var someInterfaceMock = new Mock<ISomeInterface>();
        someInterfaceMock.Setup(x => x.AnotherMethod()).Verifiable();

        var caller = new Caller(someInterfaceMock.Object);

        //Act
        caller.Main();

        //Assert
        someInterfaceMock.Verify();
    }

Läuft dieser test jedoch eine Ausnahme generiert...

System.ArgumentException: Invalid setup on a non-member method:
x => x.AnotherMethod()

Meine Frage ist, ist es ein schöner Weg, um mock aus der mixin-Aufruf?

In meiner Erfahrung, sind die Bedingungen mixin und Erweiterung der Methoden sind getrennte Dinge. Ich würde das letztere in diesem Fall zu vermeiden, mixups 😛
Duplikat von: stackoverflow.com/questions/562129/....

InformationsquelleAutor Russell Giddings | 2010-02-19

Schreibe einen Kommentar